]> git.mxchange.org Git - flightgear.git/blobdiff - src/Instrumentation/tacan.cxx
Make hardcoded error values configurable.
[flightgear.git] / src / Instrumentation / tacan.cxx
index a6781d7d3477ca1a93b1e0582b1556a5f9a42049..92bb7df0edff6473607339a0fb1f78db7ad1e7b8 100755 (executable)
@@ -17,7 +17,7 @@
 
 #include "tacan.hxx"
 
-SG_USING_STD(vector);
+using std::vector;
 
 
 /**
@@ -58,6 +58,8 @@ TACAN::TACAN ( SGPropertyNode *node ) :
     _transmitter_pos(SGGeod::fromDeg(0, 0)),
     _transmitter_range_nm(0),
     _transmitter_bias(0.0),
+    _mobile_lat(0.0),
+    _mobile_lon(0.0),
     _listener_active(0)
 {
 }
@@ -154,10 +156,10 @@ TACAN::update (double delta_time_sec)
     double mobile_bearing = 0;
     double mobile_distance = 0;
 
-    SG_LOG( SG_INSTR, SG_DEBUG, "carrier_lat " << _mobile_lat);
-    SG_LOG( SG_INSTR, SG_DEBUG, "carrier_lon " << _mobile_lon);
-    SG_LOG( SG_INSTR, SG_DEBUG, "carrier_name " << _mobile_name);
-    SG_LOG( SG_INSTR, SG_DEBUG, "carrier_valid " << _mobile_valid);
+    SG_LOG( SG_INSTR, SG_DEBUG, "mobile_lat " << _mobile_lat);
+    SG_LOG( SG_INSTR, SG_DEBUG, "mobile_lon " << _mobile_lon);
+    SG_LOG( SG_INSTR, SG_DEBUG, "mobile_name " << _mobile_name);
+    SG_LOG( SG_INSTR, SG_DEBUG, "mobile_valid " << _mobile_valid);
     geo_inverse_wgs_84(altitude_m,
                        latitude_deg,
                        longitude_deg,
@@ -276,6 +278,7 @@ TACAN::search (double frequency_mhz, double longitude_rad,
                double latitude_rad, double altitude_m)
 {
     int number, i;
+    _mobile_valid = false;
 
     SG_LOG( SG_INSTR, SG_DEBUG, "tacan freq " << frequency_mhz );
 
@@ -290,7 +293,7 @@ TACAN::search (double frequency_mhz, double longitude_rad,
 
     if ( freq_valid ) {
 
-        string str1( mobile_tacan->get_name() );
+        string str1( mobile_tacan->name() );
 
         SGPropertyNode * branch = fgGetNode("ai/models", true);
         vector<SGPropertyNode_ptr> carrier = branch->getChildren("carrier");
@@ -312,7 +315,7 @@ TACAN::search (double frequency_mhz, double longitude_rad,
                     _mobile_elevation_ft = mobile_tacan->get_elev_ft();
                     _mobile_range_nm = mobile_tacan->get_range();
                     _mobile_bias = mobile_tacan->get_multiuse();
-                    _mobile_name = mobile_tacan->get_name();
+                    _mobile_name = mobile_tacan->name();
                     _mobile_ident = mobile_tacan->get_trans_ident();
                     _mobile_valid = true;
                     SG_LOG( SG_INSTR, SG_DEBUG, " carrier transmitter valid " << _mobile_valid );
@@ -324,17 +327,13 @@ TACAN::search (double frequency_mhz, double longitude_rad,
             }
         }
 
-        SG_LOG( SG_INSTR, SG_DEBUG, "name " << _mobile_name);
-        SG_LOG( SG_INSTR, SG_DEBUG, "lat " << _mobile_lat << "lon " << _mobile_lon);
-        SG_LOG( SG_INSTR, SG_DEBUG, "elev " << _mobile_elevation_ft);
-
         //try any AI tankers second
 
         if ( !_mobile_valid) {
             SG_LOG( SG_INSTR, SG_DEBUG, "tanker transmitter valid start " << _mobile_valid );
 
         SGPropertyNode * branch = fgGetNode("ai/models", true);
-        vector<SGPropertyNode_ptr> tanker = branch->getChildren("aircraft");
+        vector<SGPropertyNode_ptr> tanker = branch->getChildren("tanker");
 
         number = tanker.size();
 
@@ -354,7 +353,7 @@ TACAN::search (double frequency_mhz, double longitude_rad,
                     _mobile_elevation_ft = tanker[i]->getDoubleValue("position/altitude-ft");
                     _mobile_range_nm = mobile_tacan->get_range();
                     _mobile_bias = mobile_tacan->get_multiuse();
-                    _mobile_name = mobile_tacan->get_name();
+                    _mobile_name = mobile_tacan->name();
                     _mobile_ident = mobile_tacan->get_trans_ident();
                     _mobile_valid = true;
                     SG_LOG( SG_INSTR, SG_DEBUG, " tanker transmitter valid " << _mobile_valid );
@@ -365,11 +364,6 @@ TACAN::search (double frequency_mhz, double longitude_rad,
                 }
             }
         }
-
-        SG_LOG( SG_INSTR, SG_DEBUG, "tanker name " << _mobile_name);
-        SG_LOG( SG_INSTR, SG_DEBUG, "lat " << _mobile_lat << "lon " << _mobile_lon);
-        SG_LOG( SG_INSTR, SG_DEBUG, "elev " << _mobile_elevation_ft);
-        SG_LOG( SG_INSTR, SG_DEBUG, "range " << _mobile_range_nm);
     }
 
     //try any mp tankers third, if we haven't found the tanker in the ai aircraft
@@ -398,7 +392,7 @@ TACAN::search (double frequency_mhz, double longitude_rad,
                     _mobile_elevation_ft = mp_tanker[i]->getDoubleValue("position/altitude-ft");
                     _mobile_range_nm = mobile_tacan->get_range();
                     _mobile_bias = mobile_tacan->get_multiuse();
-                    _mobile_name = mobile_tacan->get_name();
+                    _mobile_name = mobile_tacan->name();
                     _mobile_ident = mobile_tacan->get_trans_ident();
                     _mobile_valid = true;
 
@@ -421,19 +415,18 @@ TACAN::search (double frequency_mhz, double longitude_rad,
     }
 
     // try the TACAN/VORTAC list next
-    FGNavRecord *tacan
-        = globals->get_tacanlist()->findByFreq( frequency_mhz, longitude_rad,
-                                                latitude_rad, altitude_m);
+    FGNavRecord *tacan = globals->get_tacanlist()->findByFreq( frequency_mhz,
+      SGGeod::fromRadM(longitude_rad, latitude_rad, altitude_m));
 
     _transmitter_valid = (tacan != NULL);
 
     if ( _transmitter_valid ) {
         SG_LOG( SG_INSTR, SG_DEBUG, "transmitter valid " << _transmitter_valid );
 
-        _transmitter_pos = tacan->get_pos();
+        _transmitter_pos = tacan->geod();
         _transmitter_range_nm = tacan->get_range();
         _transmitter_bias = tacan->get_multiuse();
-        _transmitter_name = tacan->get_name();
+        _transmitter_name = tacan->name();
         _name_node->setStringValue(_transmitter_name.c_str());
         _transmitter_ident = tacan->get_trans_ident();
         _ident_node->setStringValue(_transmitter_ident.c_str());