1
0
Fork 0
Commit graph

66 commits

Author SHA1 Message Date
ThorstenB
cc020fe9df Avoid excessive load when no navaids are in range
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.
2011-08-24 23:17:05 +02:00
ThorstenB
f32656b2a5 Fix crash in GPS module.
Fixes crash on exit (during property untie). Also potential run-time crash.
2011-01-21 23:44:23 +01:00
James Turner
0931fe332e Guard against NaN SGGeods in FGPositioned spatial queries, and in the GPS lat/lon reading code. 2010-12-19 16:18:12 +00:00
ThorstenB
138449f4bd Avoid exceptions in route manager module.
Avoid segfaults in gps when route manager doesn't throw exceptions.
Minor fix when removing waypoints by negative index.
2010-12-05 21:26:51 +01:00
James Turner
dd2eec7bd8 Airways/procedures code - add new data structures to store waypoints and
procedures, and routing algorithms, and modify the GPS, route manager and
WaypointList to use the new objects.
2010-10-20 09:02:02 +01:00
James Turner
ae50c054a9 Fix crashes (activating the route-manager) with a default GPS. 2010-08-16 17:10:12 +01:00
James Turner
57cb0a809b Fix bug 150 (airports not found in GPS search)
Overhaul and simplify the GPS search logic based
on experience and testing with the API. Also fix
search-by-name, which was broken.
2010-08-14 19:16:28 +01:00
James Turner
7aba4333a2 Reset - instruments can be re-inited now (reloads XML files) 2010-08-01 19:04:31 +01:00
James Turner
d1852430bf Make various implicit includes (via PLIB) explicit. 2010-07-28 10:25:42 +01:00
Mathias Froehlich
721566a6e7 Fix some more unitialized value warnings. 2010-05-29 17:17:49 +02:00
torsten
0750d8a6d4 gps warning fix (xxx will be initialized after yyy) 2010-04-19 09:56:32 +02:00
fredb
1c7278b474 Initialise member variable 2010-03-28 15:26:43 +02:00
jmt
ee8437431a Expose a flag indicating if the GPS is driving the AP (to give clearer user feedback when that is the case) 2010-03-28 15:21:05 +02:00
jmt
4e24fbbb91 GPS: enable switching to OBS/DTO mode with no valid scratch - use active waypoint. 2010-03-28 00:33:44 +01:00
jmt
40e383451b GPS: add NS and EW velocity computation, which some real-world devices display. 2010-03-28 00:33:29 +01:00
jmt
0be2e03d7e GPS: fix bugs where GPS overwrites NAV1 course, including --nav1 command line 2010-03-28 00:32:34 +01:00
jmt
5ed73d063c Bugfix: ensure GPS WP1 Mag-bearing is normalised to [0..360] 2010-02-14 00:27:30 +01:00
jmt
10d4799058 GPS: improve reliability (at the expense of some in-development features) for pending release.
- default to an invalid altitude in routes, instead of cruise altitude (temporarily)
- only set an altitude on the autopilot, if valid
- only add departure airport/runway to the route, if not airborne
2010-01-16 16:00:15 +01:00
jmt
21f1fcd17a GPS:
- relaxed overflight sequencing threshold
 - default to linear CDI deviation in the configuration
2010-01-16 16:00:15 +01:00
jmt
8cfdfb21a5 GPS / route-manager: only drive autopilot true-heading in LEG mode, for compatibility with the old behaviour. 2009-12-23 09:40:58 +01:00
jmt
053d405a5c GPS: make 'loadRouteWaypoint' robust about bad scratch/index values. 2009-12-22 07:44:24 +01:00
jmt
d3d17d9ec0 Fix GPS SGPropertyNode tie() handling, as suggested by John Denker. 2009-12-22 07:42:14 +01:00
jmt
35cb89626e As discussed on the mailing list, make the 'nearest' GPS command use scratch lat/lon as the search origin if they are valid. 2009-12-12 00:11:41 +01:00
jmt
53b16caec0 Check for an empty search query in GPS searches, and fix test code. 2009-10-27 22:22:03 +01:00
jmt
57d8dca176 Fix for an uninitialised value, reported by Dave Luff. 2009-10-22 23:21:34 +02:00
jmt
9495c2efdf Route tweaks, especially in-flight activation and deactivation
* Don't require a valid departure and destination airport
* Handle in-air route activation cleanly
* Handle end-of-route situation cleanly
2009-10-22 23:21:25 +02:00
jmt
08039f1fa5 Tweak permitted indices for GPS route insert commands. 2009-10-21 16:28:14 +02:00
jmt
2a86384da7 GPS commands to edit the route manager route. 2009-10-21 16:28:01 +02:00
jmt
332e7fc59b GPS data validity clean-up; it was a mess, now it's more robust. Thanks to Dave Luff for reporting. 2009-10-19 23:56:51 +02:00
jmt
afb1e7ffe9 Further GPS and route manager behavioural fixes
* 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
2009-10-16 11:24:36 +02:00
jmt
879531ce63 Make the GPS drive the autopilot directly (if configured), also update external course (OBS) source, and init at the current airport. 2009-10-14 00:42:37 +02:00
jmt
72d9c254f4 Numerical robustness for the GPS code, when dt or last_speed_kts is zero. 2009-10-07 08:26:00 +02:00
Tim Moore
696007e503 include header for auto_ptr 2009-10-06 11:20:19 +02:00
jmt
d784810430 Land the GPS/route-manager re-write. Many things are better, many other things will be better, some things are no doubt broken. Please be patient and report problems on the mailing list. 2009-10-06 10:44:01 +02:00
timoore
0ce5f350ff Fix two sources of floating point exceptions
When a subsystem is updated, dt can be 0 if the program is paused. There
may be other subsystems that don't check that dt is non-zero.
2009-06-03 00:18:54 +02:00
mfranz
b07ad149ae turn a few #include paths from the "foo" form to <foo>
The quotes form is normally only used for headers with path relative
to the including file's path, though the standard doesn't strictly
mandate this. This is consistent with the rest of sg/fg, it makes the
code's intent clearer and helps to find headers. (And it's a few
milliseconds faster, too.)
2009-05-18 12:24:17 +02:00
jmt
0b9e224be9 Patch from Ron Jensen: make the TTW computation marginally less silly. 2009-01-07 10:25:26 +01:00
fredb
69b2c0b697 James Turner :
Here's a patch which refactors the 'plain' GPS code into a slightly
more manageable structure - i.e breaks the large update() method into
various sub-functions. I've tested the patch with B1900d, and things
seem to work as expected, but if anyone experiences GPS weirdness
after this is committed, of course please report it.

The motivation for this was helping me learn the code - I've planning
some changes in this area, and splitting up the logic will hopefully
make that task easier.
2008-12-09 08:10:33 +00:00
ehofman
3b486e1aee James Turner:
Here's part 2 - converting FGFix (the simplest one) to be both heap-based and inherit FGPositioned. One minor benefit from this is replacing some dangerous code in FGFixList which used to return the address of an iterator member ('&it->second'). To keep the diff a sensible size, I'm not updating the callers to use the richer FGPositioned types - i.e replacing separate lat/lon handling with SGGeod. I will make those cleanups, but in future patches.
2008-09-10 08:54:49 +00:00
ehofman
a1426a812a James Turner:
Switches the MkVIII code to use the same 'closest airport' logic as everything
else, instead of its own special version.
2008-08-15 18:48:11 +00:00
ehofman
c4a38e10ec James Turner:
Attached patch + new file make FGNavRecord have a .cxx file, and a constructor w
hich allows all the parameters to be supplied. Along the way I also cleaned up t
he navrecord.hxx header, lots more header pollution has been killed.

Some long methods are no longer inline, but were all suspiciously long to meet c
ompiler inlining criteria (I'm not clear if the 'inline' keyword is advisory or
mandatory in this situation) - I don't expect this to affect performance in any
way whatsoever.

The constructor addition is to support some hacking I'm doing improving the star
tup performance of the navDB by lazily loading the data, and caching it in a mor
e efficient format than text. I'm submitting this change (and probably some othe
r small tweaks in the future) since they are worthwhile as cleanups regardless o
f how my current experiments work out.
2008-08-03 14:34:42 +00:00
ehofman
667e64e1eb - remove the SG_GLxxxx_H #defines, since OSG provides its own versions
- this exposed a bizarre issue on Mac where dragging in <AGL/agl.h> in
   extensions.hxx was pulling in all of Carbon to the global namespace
   - very scary. As a result, I now need to explicitly include CoreFoundation
   in fg_init.cxx.
 - change SG_USING_STD(x) to using std::x
2008-07-27 16:25:13 +00:00
durk
f5e9e1898f Miscellaneous tweaks and Bugfixes. Mostly memory leaks ported from the plib
version
* Delete ai list objects in ~ATC/AIMgr.cxx:AIMgr::~AIMgr()
* Delete colors in GUI/new_gui.cxx: NewGui::~NewGui.cxx
* Delete memory allocated to the class member "route" in
  Instrumentation/gps.cxx
* Delete all globals (except a few "unsafe" ones that still cause segfaults
  and need further examination.
* Use an SGShared pointer for navaid memory allocation, so that pointers to
  individual navaid objects can be included safely in multiple navaid lists
2007-10-20 08:36:21 +00:00
mfranz
15139a42b6 - make FGAirport::search() more versatile, so that it can't only search
the next airport or airport with METAR station, but about any type of
  airport
- as a side effect this change makes it also 30 to 50% faster  :-)

In the long run this linear search shall be replaced with a spatial
algorithm (like octree), which will be a much bigger performance gain.
2007-10-05 21:54:52 +00:00
mfranz
b9e4775a7a Roy Vegard Ovesen:
- finish cleanup/optimization of instrumentation system (started by mfranz)
- improve configuration of special properties by
  addressing them directly
2006-12-06 22:11:43 +00:00
daveluff
0db0e1992e Fix property typo 2005-11-26 23:56:28 +00:00
curt
0bb1494452 David Luff:
Attached is a patch to the airport data storage that I would like committed
after review if acceptable.  Currently the storage of airports mapped by ID
is by locally created objects - about 12 Meg or so created on the stack if
I am not mistaken.  I've changed this to creating the airports on the heap,
and storing pointers to them - see FGAirportList.add(...) in
src/Airports/simple.cxx.  I believe that this is probably better practice,
and it's certainly cured some strange problems I was seeing when accessing
the airport data with some gps unit code.  Changes resulting from this have
cascaded through a few files which access the data - 11 files are modified
in all.  Melchior and Durk - you might want to test this and shout if there
are problems since the metar and traffic code are probably the biggest
users of the airport data.  I've also added a fuzzy search function that
returns the next matching airport code in ASCII sequence in order to
support gps units that have autocompletion of partially entered codes.

More generally, the simple airport class seems to have grown a lot with the
fairly recent addition of the parking, runway preference and schedule time
code.  It is no longer just an encapsulation of the global airport data
file, and has grown to 552 bytes in size when unpopulated (about 1/2 a K!).
 My personal opinion is that we should look to just store the basic data in
apt.dat for all global airports in a simple airport class, plus globally
needed data (metar available?), and then have the traffic, AI and ATC
subsystems create more advanced airports for themselves as needed in the
area of interest.  Once a significant number of airports worldwide have
ground networks and parking defined, it will be impractical and unnecessary
to store them all in memory.  That's just a thought for the future though.
2005-09-20 20:26:57 +00:00
mfranz
ee42a35cbc revert last patch 2005-06-30 20:08:02 +00:00
mfranz
93dbac482f remove "keep" argument; the new removeChild() doesn't support that any more 2005-06-28 11:23:53 +00:00
ehofman
28fe28ec4f Melchior FRANZ:
_course_deg is first initialized in the if()-branch (gps.cxx:419). But
this branch isn't entered at first run if wp0==wp1, so that in line 615
fgfs tries to SG_NORMALIZE_RANGE() a random value, which can take a
long while if the number huge. This was occasionally a number greater
than 10160!

- initialize all vars before they are used (fixes endless loop)
- fix some compiler warnings (initialization order, unused vars)
2005-04-06 08:24:30 +00:00