Fix a bug with converting frequencies to "int".
This commit is contained in:
parent
8f21c91edf
commit
8f1c10a746
10 changed files with 37 additions and 19 deletions
|
@ -1,13 +1,13 @@
|
||||||
noinst_LIBRARIES = libNavAids.a
|
noinst_LIBRARIES = libNavaids.a
|
||||||
|
|
||||||
noinst_PROGRAMS = testnavs
|
noinst_PROGRAMS = testnavs
|
||||||
|
|
||||||
libNavAids_a_SOURCES = \
|
libNavaids_a_SOURCES = \
|
||||||
fix.hxx fixlist.hxx fixlist.cxx \
|
fix.hxx fixlist.hxx fixlist.cxx \
|
||||||
ils.hxx ilslist.hxx ilslist.cxx \
|
ils.hxx ilslist.hxx ilslist.cxx \
|
||||||
nav.hxx navlist.hxx navlist.cxx
|
nav.hxx navlist.hxx navlist.cxx
|
||||||
|
|
||||||
testnavs_SOURCES = testnavs.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
|
INCLUDES += -I$(top_builddir) -I$(top_builddir)/src
|
||||||
|
|
|
@ -28,6 +28,9 @@
|
||||||
#include "fixlist.hxx"
|
#include "fixlist.hxx"
|
||||||
|
|
||||||
|
|
||||||
|
FGFixList *current_fixlist;
|
||||||
|
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
FGFixList::FGFixList( void ) {
|
FGFixList::FGFixList( void ) {
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,4 +62,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
extern FGFixList *current_fixlist;
|
||||||
|
|
||||||
|
|
||||||
#endif // _FG_FIXLIST_HXX
|
#endif // _FG_FIXLIST_HXX
|
||||||
|
|
|
@ -112,7 +112,7 @@ operator >> ( istream& in, FGILS& i )
|
||||||
>> i.imlat >> i.imlon;
|
>> i.imlat >> i.imlon;
|
||||||
|
|
||||||
|
|
||||||
i.locfreq = (int)(f * 100.0);
|
i.locfreq = (int)(f*100.0 + 0.5);
|
||||||
|
|
||||||
// return in >> skipeol;
|
// return in >> skipeol;
|
||||||
return in;
|
return in;
|
||||||
|
|
|
@ -28,6 +28,9 @@
|
||||||
#include "ilslist.hxx"
|
#include "ilslist.hxx"
|
||||||
|
|
||||||
|
|
||||||
|
FGILSList *current_ilslist;
|
||||||
|
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
FGILSList::FGILSList( void ) {
|
FGILSList::FGILSList( void ) {
|
||||||
}
|
}
|
||||||
|
@ -95,7 +98,7 @@ bool FGILSList::init( FGPath path ) {
|
||||||
bool FGILSList::query( double lon, double lat, double elev, double freq,
|
bool FGILSList::query( double lon, double lat, double elev, double freq,
|
||||||
FGILS *ils, double *heading, double *dist )
|
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 current = stations.begin();
|
||||||
ils_list_iterator last = stations.end();
|
ils_list_iterator last = stations.end();
|
||||||
|
|
|
@ -65,4 +65,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
extern FGILSList *current_ilslist;
|
||||||
|
|
||||||
|
|
||||||
#endif // _FG_ILSLIST_HXX
|
#endif // _FG_ILSLIST_HXX
|
||||||
|
|
|
@ -88,7 +88,7 @@ operator >> ( istream& in, FGNav& n )
|
||||||
in >> n.type >> n.lat >> n.lon >> n.elev >> f >> n.range
|
in >> n.type >> n.lat >> n.lon >> n.elev >> f >> n.range
|
||||||
>> c >> n.ident;
|
>> c >> n.ident;
|
||||||
|
|
||||||
n.freq = (int)(f * 100.0);
|
n.freq = (int)(f*100.0 + 0.5);
|
||||||
if ( c == 'Y' ) {
|
if ( c == 'Y' ) {
|
||||||
n.dme = true;
|
n.dme = true;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -28,6 +28,9 @@
|
||||||
#include "navlist.hxx"
|
#include "navlist.hxx"
|
||||||
|
|
||||||
|
|
||||||
|
FGNavList *current_navlist;
|
||||||
|
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
FGNavList::FGNavList( void ) {
|
FGNavList::FGNavList( void ) {
|
||||||
}
|
}
|
||||||
|
@ -95,7 +98,7 @@ bool FGNavList::init( FGPath path ) {
|
||||||
bool FGNavList::query( double lon, double lat, double elev, double freq,
|
bool FGNavList::query( double lon, double lat, double elev, double freq,
|
||||||
FGNav *n, double *heading, double *dist )
|
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 current = stations.begin();
|
||||||
nav_list_iterator last = stations.end();
|
nav_list_iterator last = stations.end();
|
||||||
|
|
|
@ -65,4 +65,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
extern FGNavList *current_navlist;
|
||||||
|
|
||||||
|
|
||||||
#endif // _FG_NAVLIST_HXX
|
#endif // _FG_NAVLIST_HXX
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
int main() {
|
int main() {
|
||||||
double heading, dist;
|
double heading, dist;
|
||||||
|
|
||||||
FGNavList navs;
|
current_navlist = new FGNavList;
|
||||||
FGPath p_nav( "/home/curt/FlightGear/Navaids/default.nav" );
|
FGPath p_nav( "/home/curt/FlightGear/Navaids/default.nav" );
|
||||||
navs.init( p_nav );
|
current_navlist->init( p_nav );
|
||||||
FGNav n;
|
FGNav n;
|
||||||
if ( navs.query( -93.2, 45.14, 3000, 117.30,
|
if ( current_navlist->query( -93.2, 45.14, 3000, 117.30,
|
||||||
&n, &heading, &dist) ) {
|
&n, &heading, &dist) ) {
|
||||||
cout << "Found a vor station in range" << endl;
|
cout << "Found a vor station in range" << endl;
|
||||||
cout << " id = " << n.get_ident() << endl;
|
cout << " id = " << n.get_ident() << endl;
|
||||||
cout << " heading = " << heading << " dist = " << dist << endl;
|
cout << " heading = " << heading << " dist = " << dist << endl;
|
||||||
|
@ -20,12 +20,12 @@ int main() {
|
||||||
cout << "not picking up vor. :-(" << endl;
|
cout << "not picking up vor. :-(" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
FGILSList ilslist;
|
current_ilslist = new FGILSList;
|
||||||
FGPath p_ils( "/home/curt/FlightGear/Navaids/default.ils" );
|
FGPath p_ils( "/home/curt/FlightGear/Navaids/default.ils" );
|
||||||
ilslist.init( p_ils );
|
current_ilslist->init( p_ils );
|
||||||
FGILS i;
|
FGILS i;
|
||||||
if ( ilslist.query( -93.1, 45.24, 3000, 110.30,
|
if ( current_ilslist->query( -93.1, 45.24, 3000, 110.30,
|
||||||
&i, &heading, &dist) ) {
|
&i, &heading, &dist) ) {
|
||||||
cout << "Found an ils station in range" << endl;
|
cout << "Found an ils station in range" << endl;
|
||||||
cout << " apt = " << i.get_aptcode() << endl;
|
cout << " apt = " << i.get_aptcode() << endl;
|
||||||
cout << " rwy = " << i.get_rwyno() << endl;
|
cout << " rwy = " << i.get_rwyno() << endl;
|
||||||
|
@ -34,12 +34,12 @@ int main() {
|
||||||
cout << "not picking up ils. :-(" << endl;
|
cout << "not picking up ils. :-(" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
FGFixList fixlist;
|
current_fixlist = new FGFixList;
|
||||||
FGPath p_fix( "/home/curt/FlightGear/Navaids/default.fix" );
|
FGPath p_fix( "/home/curt/FlightGear/Navaids/default.fix" );
|
||||||
fixlist.init( p_fix );
|
current_fixlist->init( p_fix );
|
||||||
FGFix fix;
|
FGFix fix;
|
||||||
if ( fixlist.query( "GONER", -82, 41, 3000,
|
if ( current_fixlist->query( "GONER", -82, 41, 3000,
|
||||||
&fix, &heading, &dist) ) {
|
&fix, &heading, &dist) ) {
|
||||||
cout << "Found a matching fix" << endl;
|
cout << "Found a matching fix" << endl;
|
||||||
cout << " id = " << fix.get_ident() << endl;
|
cout << " id = " << fix.get_ident() << endl;
|
||||||
cout << " heading = " << heading << " dist = " << dist << endl;
|
cout << " heading = " << heading << " dist = " << dist << endl;
|
||||||
|
|
Loading…
Reference in a new issue