Our nav.dat.gz seem to have many bugs regarding paired LOC/DME where
the DME is missing.
A feature has recently been introduced to always use a LOC frequency
as a DME to avoid these issues. However many LOC station do not have
a DME paired at their frequency and this behaviour might be as confusing
as having no DME where one should be.
Before we get new/bugfree navdata, a property can be set to select
the desired behaviour:
if /sim/realism/dme-fallback-to-loc is true or absent, LOC will be
treated as DME (realism is off)
if /sim/realism/dme-fallback-to-loc is false, LOC will be NOT be
treated as DME (realism is on)
Here comes the work-in-progres code for a new navradio
implementation. Once completed, it will replace the
old/current navradio implementation.
The new code can be activated by setting
/instrumentation/use-new-navradio=true
at startup. This disables the old navradio implementation.
Current state:
- VOR works pretty good including the new
functionality 'code of confusion'.
- LOC and GS basically work
- backward compatibility (many properties) is to be implemented
- 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
When no navaid is found, '_ref_navaid_id_node->setStringValue("")' results
in a listener firing, which requests another navaid update when no navaid
is available.
=> Resulted in FGPositioned::findClosest being called in every update loop,
when no navaid was within range.
Whenever resolving a (relative) path to an absolute path with
'resolve_maybe_aircraft_path', check if the result is empty and report original
(relative) path as missing. Otherwise no or a meaningless message is
issued ("File '' not found.").
Fixes an ugly issue with OSG overwriting memory/stack. wxradar triggered
the issue in display mode "ARC" - since it configured a display mask (12
vertices) but all vertices were immediately removed again ("_vertices->clear()").
Issue is fixed, mask now working - however the mask wasn't even properly
aligned for the display (probably never worked since OSG port). The display
mask is only really required for weather display - so disabling for now.
This class and their source files visual_enviro.[h|c]xx were
unused since OSG transition. It's only functionality was to
keep a variable for the enable-state of rendering of precipitation.
This has now been moved to SGPrecipitation.
This patch also removes all references to this class and
visual_enviro.hxx. Wxradar needs a new implementation for cloud
echoes which probably should be part of fgclouds.
See also SimGear commit 4e6159aa07f2817c09fad72db64d713e47f6f3da
New "auto-position" switch to always use closest tower for tower-view.
Exposes new "/sim/airport/closest-airport-id" property.
Display closest airport on groundradar by default.
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.
- former mk-viii voiceplayer is now an independent FGVoicePlayer
- voiceplayer still sits in mk-viii module for now
- add option to configure location/prefix of voice samples
- add pause/resume to voiceplayer
ADF bug fixes from John Denker. Changes from current behaviour are:
* Include the power button in the electrical checks
* Raise the required input voltage from 1V to 8V
* Don't reset the heading to 90 degrees when out of range or no power
(heading is now only reset to 90 in ANT or TEST mode)
ADF bug fixes from John Denker. Changes from current behaviour are:
* Include the power button in the electrical checks
* Raise the required input voltage from 1V to 8V
* Don't reset the heading to 90 degrees when out of range or no power
(heading is now only reset to 90 in ANT or TEST mode)
This patch removes the conditional compilation of ATCDCL, compiling both
the old and new ATC systems. The old system only provides ATIS, AWOS and
some dialog lookups, and hence should not conflict with the new system.
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...
To load approach data into the KLN89, drop an ARINC 424 format file
named "rnav.dat" into the data/Navaids directory. The loader has
been tested on the 424-18 data revision, so may need tweaking for
the latest data. Currently about 97% of the listed US non-precision
approaches are loaded, the majority of the failures appear to be due
to 1-digit runway code offsets between the flightgear airport data
and the ARINC data due to magnetic variation changes.
"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...
- Fixed triggering of debug assertion "altitude_callout_voice != NULL" when
altitude callouts were delayed by higher priority warnings.
- Fixed performance bug: MK_VIII::IOHandler::TerrainClearanceFilter::update
sucked CPU time (top #12 in profiler), due to complex "moving average"
calculation on a queue of hundreds/thousands of altitude samples.
Also, pausing the sim caused this queue to grow excessively (by one sample
per update loop) => resuming the sim after pausing it for a long time
resulted in the TerrainClearanceFilter sucking even more CPU time...
=> Number of altitude samples is now limited to 5 samples/sim-time-second
(still more than enough to calculate a stable average).
* Fixed segfault when GPWS finds a matching airport but no suitable runway.
* Fixed several sim deadlocks when GPWS alerts trigger at "strange"
heights (e.g. initial alert height is -5ft or 1e-29...).
* Avoid repitition of GPWS alerts below 30ft, i.e. avoid excessive
repitition when plane becomes airborne at bumpy landings.
Only block callouts which were actually issued to the pilot. When
multiple callouts trigger at the same time, allow lower prio warnings
to be issued once the higher prio ones are resolved.
=> Gear/flap warnings are now working reliably (no longer blocked
permanently when altitude callouts are enabled).
* Fix issue #139, uninitialized variable causing sim deadlock in MK_VIII::Mode5Handler::get_soft_bias
* Fix more uninitialized variables sometimes causing warnings not to work.
* Fix some warnings only working on a single approach (missing reset).
* EGPWS self-test can now be triggered more than once (missing reset).
* Implement configuration options for attitude and altitude input selection.
Add helper to look for an aircraft branch path in multiple candidate locations.
Update the main subsystems to use the helper, and hence load from any aircraft dir.