An upcoming commit will make the sound headers standalone, and no longer include various other headers / using std:: declarations. Prepare for this by making includes and usage of namespaces explicit.
Cache the parsed navigation and airport data in a binary file to reduce
startup times and memory consumption (since only referenced FGPositioned
elements are held in memory).
Data will be reimported when the mod-time of any input file is changed.
If a global file is changed (nav.dat, awy.dat, apt.dat, etc), the cache
will be completely rebuilt, which takes approximately 30 seconds on
moderate hardware. (Future work may reduce this).
The glideslope station was only searched once whenever the NAV station
changed. However, sometimes a mismatching G/S station is found, since
another G/S station is still closer when the NAV station changes.
When this happened, the G/S station was never updated again (while the
NAV station stayed in range), resulting in the NAV receiver providing
correct localizer, but bad G/S data (data matching another, remote station).
Issue is fixed by alternating between searching NAV and G/S stations.
Make sure gs-inrange and deflection outputs have same behaviour, no matter
which out-of-range condition applies (i.e. aircraft moved out of range,
frequency changed, ...).
This property is true if the active frequency is tuned to a
paired LOC/GS frequency in the range 108.00 - 111.95 with a
odd 100kHz digit (108.10, 108.15, 108.30, 108.35 ...)
It only indicates, that this _is_ a LOC/GS frequency,
it does _not_ provide any indication if a LOC/GS station is
actually being received.
- wrap the ident-generating code into a class
- move dme-in-range property into dme.cxx
- move dme-ident generation into dme.cxx
- support ident-button and volume for dme idents
- use globals.get_aircraft_position instead of properties
- some minor cleanup
Property "dme-in-range" should also work with ILS signals, which include
a DME. The nav database (dme_list) doesn't have separate entries for
"ILS-DME" (unlike for "VOR-DME"), so searching a DME by frequency didn't
work for ILS.
=> "instrumentation/nav[*]/dme-in-range" can now be used to enable/disable
cockpit DME displays.
Allow switching off slaved-to-gps (resynch NAV radio/update all NAV outputs)
Allow tuning NAV stations and keep DME alive when slaved to GPS
Clear station ID and heading when loosing NAV signal
Uninitialized variables were sources for NaN values.
Once NaNs are passed to Nasal (through (tied) properties), these cause
a crash. Nasal cannot handle NaNs - it interprets these as pointer values...
"nav-loc" and "has_gs" properties were not updated when nav receiver was rebooted.
Shutting down the nav receiver clears all nav outputs (including "nav-loc" and "has_gs").
=> When nav receiver is powered again, all outputs must be updated.
=> "nav-loc" and "has_gs" are only updated when active nav station changes.
=> old nav station must be cleared on shutdown to enforce update on nav reboot...
* When the nav-radio is slaved, calculated radial/target-hdg-deg
(needed by some autopilot logic)
* Handle editing (including deletion) of route waypoints correctly,
including deleting the active waypoint
* Add a signal to the route manager when the last wpt is reached, and
use it in the GPS to revert to OBS mode.
* Change the altitude handling to use the specified cruise altitude
* Fix a bug where autopilot/locks/altitude was treated as a boolean