]> git.mxchange.org Git - flightgear.git/blobdiff - scripts/perl/dafif/dafift2nav.pl
- abort when "cvs up" failed (due to failed connection)
[flightgear.git] / scripts / perl / dafif / dafift2nav.pl
index 570eb7a485af3b15934b497368776f40fb0fa05f..f215e3e48a88bdeb00581893ab988d6b8633363b 100755 (executable)
@@ -47,16 +47,13 @@ my @HAS_DME = (
 # Make a frequency from a DME channel
 sub make_freq {
   my ($type, $channel) = (@_);
-  my $freq;
+  my $offset = 0;
+  $offset = 0.05 if ($channel =~ /Y$/);
   if ($channel < 67) {
-    $freq = 108 + (($channel - 17)/10.0);
+    return 108 + (($channel - 17)/10.0) + $offset;
   } else {
-    $freq = 112 + (($channel - 67)/10.0);
+    return 112 + (($channel - 67)/10.0) + $offset;
   }
-  if ($type == 9) {
-    $freq += 0.05;
-  }
-  return $freq;
 }
 
 # Make a range based on navaid type and purpose
@@ -94,6 +91,18 @@ sub write_navaid {
          $magvar, $name, $TYPE_NAMES[$type]);
 }
 
+sub make_dmagvar {
+    my($coord) = shift;
+    my( $value );
+    my( $dir, $deg, $date ) = $coord =~ m/^([EW])(\d\d\d\d)(\d\d\d\d)/;
+    $value = $deg / 10.0;
+    if ( $dir eq "W" ) {
+        $value = -$value;
+    }
+
+    return $value;
+}
+
 
 <>;                             # skip header line
 
@@ -114,7 +123,7 @@ while (<>)
   my $elev = $F[23];
   my $freq = $F[8]/1000;
   if ($type == 3 || $type == 9) {
-    $freq = make_freq($type, 0 + $F[10]);
+    $freq = make_freq($type, $F[10]);
   }
   my $range = 0 + $F[14];
   if ($range == 0) {
@@ -125,8 +134,13 @@ while (<>)
   if ($magvar eq '') {
     $magvar = 'XXX';
   } else {
-    $magvar =~ /^([EW])([0-9.]+)( .*)?/;
-    $magvar = sprintf("%02d%s", $2/100000, $1);
+    my $tmp = make_dmagvar( $magvar );
+    # print "$magvar $tmp\n";
+    if ( $tmp <= 0 ) {
+        $magvar = sprintf("%02.0fW", -$tmp );
+    } else {
+        $magvar = sprintf("%02.0fE", $tmp );
+    }
   }
   my $name = $F[5];