2001-03-25 14:20:12 +00:00
|
|
|
#include <simgear/misc/sg_path.hxx>
|
2000-04-21 04:19:22 +00:00
|
|
|
|
2000-04-21 18:30:59 +00:00
|
|
|
#include "fixlist.hxx"
|
2000-04-21 18:00:47 +00:00
|
|
|
#include "ilslist.hxx"
|
2000-04-21 16:03:36 +00:00
|
|
|
#include "navlist.hxx"
|
2002-06-07 21:03:27 +00:00
|
|
|
#include "mkrbeacons.hxx"
|
|
|
|
|
|
|
|
// change this!
|
|
|
|
const string FG_DATA_DIR("/usr/local/lib/FlightGear");
|
2000-04-21 04:19:22 +00:00
|
|
|
|
|
|
|
int main() {
|
2000-04-21 18:00:47 +00:00
|
|
|
double heading, dist;
|
2000-04-21 05:26:24 +00:00
|
|
|
|
2000-04-24 23:51:56 +00:00
|
|
|
current_navlist = new FGNavList;
|
2002-06-07 21:03:27 +00:00
|
|
|
SGPath p_nav( FG_DATA_DIR + "/Navaids/default.nav" );
|
|
|
|
|
2000-04-24 23:51:56 +00:00
|
|
|
current_navlist->init( p_nav );
|
2002-06-07 21:03:27 +00:00
|
|
|
|
2000-04-21 16:42:01 +00:00
|
|
|
FGNav n;
|
2001-11-07 17:55:28 +00:00
|
|
|
if ( current_navlist->query( -93.2 * SG_DEGREES_TO_RADIANS,
|
|
|
|
45.14 * SG_DEGREES_TO_RADIANS,
|
|
|
|
3000, 117.30, &n) )
|
|
|
|
{
|
2000-04-21 18:00:47 +00:00
|
|
|
cout << "Found a vor station in range" << endl;
|
2000-04-21 05:26:24 +00:00
|
|
|
cout << " id = " << n.get_ident() << endl;
|
|
|
|
} else {
|
2000-04-21 18:00:47 +00:00
|
|
|
cout << "not picking up vor. :-(" << endl;
|
|
|
|
}
|
|
|
|
|
2002-06-07 21:03:27 +00:00
|
|
|
FGNav dcs;
|
|
|
|
if (current_navlist->findByIdent("DCS", -3.3 * SG_DEGREES_TO_RADIANS,
|
|
|
|
55.9 * SG_DEGREES_TO_RADIANS, &dcs)) {
|
|
|
|
|
|
|
|
cout << "Found DCS by ident" << endl;
|
|
|
|
if (dcs.get_freq() != 11520)
|
|
|
|
cout << "Frequency for DCS VOR is wrong (should be 115.20), it's "
|
|
|
|
<< dcs.get_freq() << endl;
|
|
|
|
} else {
|
|
|
|
cout << "couldn't locate DCS (Dean-Cross) VOR" << endl;
|
|
|
|
}
|
|
|
|
|
|
|
|
// we have to init the marker beacon storage before we parse the ILS file
|
|
|
|
current_beacons = new FGMarkerBeacons;
|
|
|
|
current_beacons->init();
|
|
|
|
|
2000-04-24 23:51:56 +00:00
|
|
|
current_ilslist = new FGILSList;
|
2002-06-07 21:03:27 +00:00
|
|
|
SGPath p_ils( FG_DATA_DIR + "/Navaids/default.ils" );
|
2000-04-24 23:51:56 +00:00
|
|
|
current_ilslist->init( p_ils );
|
2000-04-21 18:00:47 +00:00
|
|
|
FGILS i;
|
2001-11-07 17:55:28 +00:00
|
|
|
if ( current_ilslist->query( -93.1 * SG_DEGREES_TO_RADIANS,
|
|
|
|
45.24 * SG_DEGREES_TO_RADIANS,
|
|
|
|
3000, 110.30, &i) )
|
|
|
|
{
|
2000-04-21 18:00:47 +00:00
|
|
|
cout << "Found an ils station in range" << endl;
|
|
|
|
cout << " apt = " << i.get_aptcode() << endl;
|
|
|
|
cout << " rwy = " << i.get_rwyno() << endl;
|
|
|
|
} else {
|
|
|
|
cout << "not picking up ils. :-(" << endl;
|
2000-04-21 05:26:24 +00:00
|
|
|
}
|
2000-04-21 18:30:59 +00:00
|
|
|
|
2000-04-24 23:51:56 +00:00
|
|
|
current_fixlist = new FGFixList;
|
2002-06-07 21:03:27 +00:00
|
|
|
SGPath p_fix( FG_DATA_DIR + "/Navaids/default.fix" );
|
2000-04-24 23:51:56 +00:00
|
|
|
current_fixlist->init( p_fix );
|
2000-04-21 18:30:59 +00:00
|
|
|
FGFix fix;
|
2002-06-07 21:03:27 +00:00
|
|
|
|
|
|
|
// attempting to get the position relative to the OTR VOR; heading
|
|
|
|
// should be 108 degrees, distance 74nm (according to my SimCharts
|
|
|
|
// v1.5)
|
|
|
|
if ( current_fixlist->query( "DOGGA", -0.103 * SG_DEGREES_TO_RADIANS,
|
|
|
|
53.698 * SG_DEGREES_TO_RADIANS, 3000,
|
2001-11-07 17:55:28 +00:00
|
|
|
&fix, &heading, &dist) )
|
|
|
|
{
|
2000-04-21 18:30:59 +00:00
|
|
|
cout << "Found a matching fix" << endl;
|
|
|
|
cout << " id = " << fix.get_ident() << endl;
|
2002-06-07 21:03:27 +00:00
|
|
|
cout << " heading = " << heading << " dist = " << dist * SG_METER_TO_NM
|
|
|
|
<< endl;
|
2000-04-21 18:30:59 +00:00
|
|
|
} else {
|
|
|
|
cout << "did not find fix. :-(" << endl;
|
|
|
|
}
|
2000-04-21 04:19:22 +00:00
|
|
|
}
|