]> git.mxchange.org Git - flightgear.git/commitdiff
Melchior FRANZ:
authorehofman <ehofman>
Wed, 6 Apr 2005 08:24:30 +0000 (08:24 +0000)
committerehofman <ehofman>
Wed, 6 Apr 2005 08:24:30 +0000 (08:24 +0000)
_course_deg is first initialized in the if()-branch (gps.cxx:419). But
this branch isn't entered at first run if wp0==wp1, so that in line 615
fgfs tries to SG_NORMALIZE_RANGE() a random value, which can take a
long while if the number huge. This was occasionally a number greater
than 10160!

- initialize all vars before they are used (fixes endless loop)
- fix some compiler warnings (initialization order, unused vars)

src/Instrumentation/altimeter.cxx
src/Instrumentation/encoder.cxx
src/Instrumentation/gps.cxx
src/Instrumentation/mag_compass.cxx

index 5b7e3decc3cc52345386b4cff5325b55b851f3c0..ceea78ddc450107b06121bca97ce6f8010f7082f 100644 (file)
@@ -46,10 +46,10 @@ static double altitude_data[][2] = {
 
 
 Altimeter::Altimeter ( SGPropertyNode *node )
-    : _altitude_table(new SGInterpTable),
-      name("altimeter"),
+    : name("altimeter"),
       num(0),
-      static_port("/systems/static")
+      static_port("/systems/static"),
+      _altitude_table(new SGInterpTable)
 {
     int i;
     for (i = 0; altitude_data[i][0] != -1; i++)
index fa01c40eae8db1b8285bc7be0aa9f4a14f7d8403..c8677a6d502e9a9cda135612f12118c30f6afa2c 100644 (file)
@@ -62,10 +62,10 @@ int round (double value, int nearest=1)
 
 Encoder::Encoder(SGPropertyNode *node)
     :
-    altitudeTable(new SGInterpTable),
     name("encoder"),
     num(0),
-    staticPort("/systems/static")
+    staticPort("/systems/static"),
+    altitudeTable(new SGInterpTable)
 {
     int i;
     for ( i = 0; altitude_data[i][0] != -1; i++ )
index 83dbac7e4ee9472465caf1daf563a0eb5b7573f1..26aad8dcfeba8c86fb5f8ea86877a4371db21867 100644 (file)
@@ -32,7 +32,16 @@ GPS::GPS ( SGPropertyNode *node)
       _last_longitude_deg(0),
       _last_latitude_deg(0),
       _last_altitude_m(0),
-      _last_speed_kts(0)
+      _last_speed_kts(0),
+      _wp0_latitude_deg(0),
+      _wp0_longitude_deg(0),
+      _wp0_altitude_m(0),
+      _wp1_latitude_deg(0),
+      _wp1_longitude_deg(0),
+      _wp1_altitude_m(0),
+      _alt_dist_ratio(0),
+      _distance_m(0),
+      _course_deg(0)
 {
     int i;
     for ( i = 0; i < node->nChildren(); ++i ) {
@@ -57,7 +66,16 @@ GPS::GPS ()
       _last_longitude_deg(0),
       _last_latitude_deg(0),
       _last_altitude_m(0),
-      _last_speed_kts(0)
+      _last_speed_kts(0),
+      _wp0_latitude_deg(0),
+      _wp0_longitude_deg(0),
+      _wp0_altitude_m(0),
+      _wp1_latitude_deg(0),
+      _wp1_longitude_deg(0),
+      _wp1_altitude_m(0),
+      _alt_dist_ratio(0),
+      _distance_m(0),
+      _course_deg(0)
 {
 }
 
@@ -90,7 +108,7 @@ GPS::init ()
 
     _wp0_longitude_node = wp0_node->getChild("longitude-deg", 0, true);
     _wp0_latitude_node = wp0_node->getChild("latitude-deg", 0, true);
-    _wp0_altitude_node = wp0_node->getChild("altitude-deg", 0, true);
+    _wp0_altitude_node = wp0_node->getChild("altitude-ft", 0, true);
     _wp0_ID_node = wp0_node->getChild("ID", 0, true);
     _wp0_name_node = wp0_node->getChild("name", 0, true);
     _wp0_course_node = wp0_node->getChild("desired-course-deg", 0, true);
@@ -110,7 +128,7 @@ GPS::init ()
 
     _wp1_longitude_node = wp1_node->getChild("longitude-deg", 0, true);
     _wp1_latitude_node = wp1_node->getChild("latitude-deg", 0, true);
-    _wp1_altitude_node = wp1_node->getChild("altitude-deg", 0, true);
+    _wp1_altitude_node = wp1_node->getChild("altitude-ft", 0, true);
     _wp1_ID_node = wp1_node->getChild("ID", 0, true);
     _wp1_name_node = wp1_node->getChild("name", 0, true);
     _wp1_course_node = wp1_node->getChild("desired-course-deg", 0, true);
index 1120dce770c7b0aa39fe51bc0c688188f30d0f7f..d3d15e5c10e3d1759c5b1be5d9da86c03ced14f8 100644 (file)
@@ -86,7 +86,7 @@ MagCompass::update (double delta_time_sec)
                                 // This is the real magnetic
                                 // which would be displayed
                                 // if the compass had no errors.
-    double heading_mag_deg = _heading_node->getDoubleValue();
+    //double heading_mag_deg = _heading_node->getDoubleValue();
 
 
                                 // don't update if the compass
@@ -146,7 +146,7 @@ MagCompass::update (double delta_time_sec)
     */
     double x_accel_g = _x_accel_node->getDoubleValue() / 32;
     double y_accel_g = _y_accel_node->getDoubleValue() / 32;
-    double z_accel_g = _z_accel_node->getDoubleValue() / 32;
+    //double z_accel_g = _z_accel_node->getDoubleValue() / 32;
 
     theta -= 0.07 * x_accel_g;
     phi -= 0.07 * y_accel_g;