2 ########################################################################
3 # Convert DAFIFT NAV.TXT to FlightGear format.
4 ########################################################################
42 'Y', # NDB/DME (not used, though)
47 # Make a frequency from a DME channel
49 my ($type, $channel) = (@_);
51 $offset = 0.05 if ($channel =~ /Y$/);
53 return 108 + (($channel - 17)/10.0) + $offset;
55 return 112 + (($channel - 67)/10.0) + $offset;
59 # Make a range based on navaid type and purpose
61 my ($type, $usage) = (@_);
62 if ($type == 1 || $type == 2 || $type ==4) { # VOR
63 if ($usage == 'H' || $usage == 'B') {
65 } elsif ($usage == 'T') {
70 } elsif ($type == 3 || $type == 7) { # DME
86 my ($type, $lat, $lon, $elev, $freq, $range, $dme, $id, $magvar, $name)
89 printf("%s %10.6f %11.6f %6d %7.2f %4d %s %-4s %s %s %s\n",
90 $TYPES[$type], $lat, $lon, $elev, $freq, $range, $dme, $id,
91 $magvar, $name, $TYPE_NAMES[$type]);
97 my( $dir, $deg, $date ) = $coord =~ m/^([EW])(\d\d\d\d)(\d\d\d\d)/;
107 <>; # skip header line
109 print "// FlightGear navaid data, generated from DAFIFT NAV.TXT\n";
117 if ($TYPES[$type] eq '') {
118 warn("Bad type for " . $F[0] . "(" . $F[5] . ")\n");
124 my $freq = $F[8]/1000;
125 if ($type == 3 || $type == 9) {
126 $freq = make_freq($type, $F[10]);
128 my $range = 0 + $F[14];
130 $range = make_range($type, $F[9]);
137 my $tmp = make_dmagvar( $magvar );
138 # print "$magvar $tmp\n";
140 $magvar = sprintf("%02.0fW", -$tmp );
142 $magvar = sprintf("%02.0fE", $tmp );
147 if ($type == 7) { # NDB/DME
148 write_navaid(9, $lat, $lon, $elev, make_freq(9, $F[10]), $range,
149 'Y', $id, $magvar, $name);
152 write_navaid($type, $lat, $lon, $elev, $freq, $range,
153 $HAS_DME[$F[1]], $id, $magvar, $name);
160 # end of dafif2fix.pl