-// Search the database for the current frequencies given current location
-void FGRadioStack::update( double lon, double lat, double elev ) {
- need_update = false;
-
- Point3D aircraft = fgGeodToCart( Point3D( lon, lat, elev ) );
- Point3D station;
- double az1, az2, s;
-
- if ( nav1_valid ) {
- station = Point3D( nav1_x, nav1_y, nav1_z );
- nav1_loc_dist = aircraft.distance3D( station );
-
- if ( nav1_has_dme ) {
- // staightline distance
- station = Point3D( nav1_dme_x, nav1_dme_y, nav1_dme_z );
- nav1_dme_dist = aircraft.distance3D( station );
- } else {
- nav1_dme_dist = 0.0;
- }
-
- if ( nav1_has_gs ) {
- station = Point3D( nav1_gs_x, nav1_gs_y, nav1_gs_z );
- nav1_gs_dist = aircraft.distance3D( station );
- } else {
- nav1_gs_dist = 0.0;
- }
-
- if ( nav1_loc_dist < nav1_effective_range * NM_TO_METER ) {
- nav1_inrange = true;
-
- // wgs84 heading
- geo_inverse_wgs_84( elev, lat * RAD_TO_DEG, lon * RAD_TO_DEG,
- nav1_loclat, nav1_loclon,
- &az1, &az2, &s );
- nav1_heading = az1;
- // Alex: nav1_heading = - (az1 - FGBFI::getMagVar() / RAD_TO_DEG);
-
- // cout << " heading = " << nav1_heading
- // << " dist = " << nav1_dist << endl;
- } else {
- nav1_inrange = false;
- }
-
- if ( nav1_loc ) {
- } else {
- nav1_radial = nav1_sel_radial;
- }
- } else {
- nav1_inrange = false;
- // cout << "not picking up vor. :-(" << endl;
- }
-
- if ( nav2_valid ) {
- station = Point3D( nav2_x, nav2_y, nav2_z );
- nav2_loc_dist = aircraft.distance3D( station );
-
- if ( nav2_has_dme ) {
- // staightline distance
- station = Point3D( nav2_dme_x, nav2_dme_y, nav2_dme_z );
- nav2_dme_dist = aircraft.distance3D( station );
- } else {
- nav2_dme_dist = 0.0;
- }
-
- if ( nav2_has_gs ) {
- station = Point3D( nav2_gs_x, nav2_gs_y, nav2_gs_z );
- nav2_gs_dist = aircraft.distance3D( station );
- } else {
- nav2_gs_dist = 0.0;
- }
-
- if ( nav2_loc_dist < nav2_effective_range * NM_TO_METER ) {
- nav2_inrange = true;
-
- // wgs84 heading
- geo_inverse_wgs_84( elev, lat * RAD_TO_DEG, lon * RAD_TO_DEG,
- nav2_loclat, nav2_loclon,
- &az1, &az2, &s );
- nav2_heading = az1;
- // Alex: nav2_heading = - (az1 - FGBFI::getMagVar() / RAD_TO_DEG);
-
- // cout << " heading = " << nav2_heading
- // << " dist = " << nav2_dist << endl;
- } else {
- nav2_inrange = false;
- }
-
- if ( !nav2_loc ) {
- nav2_radial = nav2_sel_radial;
- }
- } else {
- nav2_inrange = false;
- // cout << "not picking up vor. :-(" << endl;
- }