From 8f1c10a746108369cbeb3aad9ac067b765974ce6 Mon Sep 17 00:00:00 2001 From: curt Date: Mon, 24 Apr 2000 23:51:56 +0000 Subject: [PATCH] Fix a bug with converting frequencies to "int". --- src/Navaids/Makefile.am | 6 +++--- src/Navaids/fixlist.cxx | 3 +++ src/Navaids/fixlist.hxx | 3 +++ src/Navaids/ils.hxx | 2 +- src/Navaids/ilslist.cxx | 5 ++++- src/Navaids/ilslist.hxx | 3 +++ src/Navaids/nav.hxx | 2 +- src/Navaids/navlist.cxx | 5 ++++- src/Navaids/navlist.hxx | 3 +++ src/Navaids/testnavs.cxx | 24 ++++++++++++------------ 10 files changed, 37 insertions(+), 19 deletions(-) diff --git a/src/Navaids/Makefile.am b/src/Navaids/Makefile.am index c6301cf53..0a8a61acd 100644 --- a/src/Navaids/Makefile.am +++ b/src/Navaids/Makefile.am @@ -1,13 +1,13 @@ -noinst_LIBRARIES = libNavAids.a +noinst_LIBRARIES = libNavaids.a noinst_PROGRAMS = testnavs -libNavAids_a_SOURCES = \ +libNavaids_a_SOURCES = \ fix.hxx fixlist.hxx fixlist.cxx \ ils.hxx ilslist.hxx ilslist.cxx \ nav.hxx navlist.hxx navlist.cxx testnavs_SOURCES = testnavs.cxx -testnavs_LDADD = libNavAids.a -lsgdebug -lsgmath -lsgmisc -lz +testnavs_LDADD = libNavaids.a -lsgdebug -lsgmath -lsgmisc -lz INCLUDES += -I$(top_builddir) -I$(top_builddir)/src diff --git a/src/Navaids/fixlist.cxx b/src/Navaids/fixlist.cxx index 19de9895f..b03d99241 100644 --- a/src/Navaids/fixlist.cxx +++ b/src/Navaids/fixlist.cxx @@ -28,6 +28,9 @@ #include "fixlist.hxx" +FGFixList *current_fixlist; + + // Constructor FGFixList::FGFixList( void ) { } diff --git a/src/Navaids/fixlist.hxx b/src/Navaids/fixlist.hxx index f172e323b..cfd61a77d 100644 --- a/src/Navaids/fixlist.hxx +++ b/src/Navaids/fixlist.hxx @@ -62,4 +62,7 @@ public: }; +extern FGFixList *current_fixlist; + + #endif // _FG_FIXLIST_HXX diff --git a/src/Navaids/ils.hxx b/src/Navaids/ils.hxx index a8bd094e1..c75ae6173 100644 --- a/src/Navaids/ils.hxx +++ b/src/Navaids/ils.hxx @@ -112,7 +112,7 @@ operator >> ( istream& in, FGILS& i ) >> i.imlat >> i.imlon; - i.locfreq = (int)(f * 100.0); + i.locfreq = (int)(f*100.0 + 0.5); // return in >> skipeol; return in; diff --git a/src/Navaids/ilslist.cxx b/src/Navaids/ilslist.cxx index 164b06d2c..8c43d7c64 100644 --- a/src/Navaids/ilslist.cxx +++ b/src/Navaids/ilslist.cxx @@ -28,6 +28,9 @@ #include "ilslist.hxx" +FGILSList *current_ilslist; + + // Constructor FGILSList::FGILSList( void ) { } @@ -95,7 +98,7 @@ bool FGILSList::init( FGPath path ) { bool FGILSList::query( double lon, double lat, double elev, double freq, FGILS *ils, double *heading, double *dist ) { - ils_list_type stations = ilslist[(int)(freq*100.0)]; + ils_list_type stations = ilslist[(int)(freq*100.0 + 0.5)]; ils_list_iterator current = stations.begin(); ils_list_iterator last = stations.end(); diff --git a/src/Navaids/ilslist.hxx b/src/Navaids/ilslist.hxx index 577a23124..df6d7d6e7 100644 --- a/src/Navaids/ilslist.hxx +++ b/src/Navaids/ilslist.hxx @@ -65,4 +65,7 @@ public: }; +extern FGILSList *current_ilslist; + + #endif // _FG_ILSLIST_HXX diff --git a/src/Navaids/nav.hxx b/src/Navaids/nav.hxx index beb0bab83..694effce1 100644 --- a/src/Navaids/nav.hxx +++ b/src/Navaids/nav.hxx @@ -88,7 +88,7 @@ operator >> ( istream& in, FGNav& n ) in >> n.type >> n.lat >> n.lon >> n.elev >> f >> n.range >> c >> n.ident; - n.freq = (int)(f * 100.0); + n.freq = (int)(f*100.0 + 0.5); if ( c == 'Y' ) { n.dme = true; } else { diff --git a/src/Navaids/navlist.cxx b/src/Navaids/navlist.cxx index 18f0cb2cc..f439044b5 100644 --- a/src/Navaids/navlist.cxx +++ b/src/Navaids/navlist.cxx @@ -28,6 +28,9 @@ #include "navlist.hxx" +FGNavList *current_navlist; + + // Constructor FGNavList::FGNavList( void ) { } @@ -95,7 +98,7 @@ bool FGNavList::init( FGPath path ) { bool FGNavList::query( double lon, double lat, double elev, double freq, FGNav *n, double *heading, double *dist ) { - nav_list_type stations = navaids[(int)(freq*100.0)]; + nav_list_type stations = navaids[(int)(freq*100.0 + 0.5)]; nav_list_iterator current = stations.begin(); nav_list_iterator last = stations.end(); diff --git a/src/Navaids/navlist.hxx b/src/Navaids/navlist.hxx index 1ae80e5b0..341bab049 100644 --- a/src/Navaids/navlist.hxx +++ b/src/Navaids/navlist.hxx @@ -65,4 +65,7 @@ public: }; +extern FGNavList *current_navlist; + + #endif // _FG_NAVLIST_HXX diff --git a/src/Navaids/testnavs.cxx b/src/Navaids/testnavs.cxx index 1a2e3dcfd..af502376c 100644 --- a/src/Navaids/testnavs.cxx +++ b/src/Navaids/testnavs.cxx @@ -7,12 +7,12 @@ int main() { double heading, dist; - FGNavList navs; + current_navlist = new FGNavList; FGPath p_nav( "/home/curt/FlightGear/Navaids/default.nav" ); - navs.init( p_nav ); + current_navlist->init( p_nav ); FGNav n; - if ( navs.query( -93.2, 45.14, 3000, 117.30, - &n, &heading, &dist) ) { + if ( current_navlist->query( -93.2, 45.14, 3000, 117.30, + &n, &heading, &dist) ) { cout << "Found a vor station in range" << endl; cout << " id = " << n.get_ident() << endl; cout << " heading = " << heading << " dist = " << dist << endl; @@ -20,12 +20,12 @@ int main() { cout << "not picking up vor. :-(" << endl; } - FGILSList ilslist; + current_ilslist = new FGILSList; FGPath p_ils( "/home/curt/FlightGear/Navaids/default.ils" ); - ilslist.init( p_ils ); + current_ilslist->init( p_ils ); FGILS i; - if ( ilslist.query( -93.1, 45.24, 3000, 110.30, - &i, &heading, &dist) ) { + if ( current_ilslist->query( -93.1, 45.24, 3000, 110.30, + &i, &heading, &dist) ) { cout << "Found an ils station in range" << endl; cout << " apt = " << i.get_aptcode() << endl; cout << " rwy = " << i.get_rwyno() << endl; @@ -34,12 +34,12 @@ int main() { cout << "not picking up ils. :-(" << endl; } - FGFixList fixlist; + current_fixlist = new FGFixList; FGPath p_fix( "/home/curt/FlightGear/Navaids/default.fix" ); - fixlist.init( p_fix ); + current_fixlist->init( p_fix ); FGFix fix; - if ( fixlist.query( "GONER", -82, 41, 3000, - &fix, &heading, &dist) ) { + if ( current_fixlist->query( "GONER", -82, 41, 3000, + &fix, &heading, &dist) ) { cout << "Found a matching fix" << endl; cout << " id = " << fix.get_ident() << endl; cout << " heading = " << heading << " dist = " << dist << endl;