mirror of
https://github.com/Xastir/Xastir
synced 2026-08-13 17:46:16 -04:00
Make all copyright notices include this year. Most say "2000-2026" but some files created later had later start dates, and some created last year only had the start date. They now all have "-2026" regardless. Closes #340
1735 lines
100 KiB
Perl
Executable file
1735 lines
100 KiB
Perl
Executable file
#!/usr/bin/env perl
|
||
use warnings;
|
||
#
|
||
# XASTIR, Amateur Station Tracking and Information Reporting
|
||
# Copyright (C) 2000-2026 The Xastir Group
|
||
#
|
||
# Converts "dump1090" telnet port output to Xastir UDP input, for decoding
|
||
# packets directly from aircraft. This script will parse packets containing
|
||
# lat/long, turn them into APRS-like packets, then use "xastir_udp_client"
|
||
# to inject them into Xastir. Must have "dump1090" running, and optionally
|
||
# "dump978" to dump packets into "dump1090" from the other frequency/protocol
|
||
# for ADS-B.
|
||
#
|
||
#
|
||
# TODO: Create probability circle around my position for aircraft sending altitude
|
||
# but no lat/long. Change the size of the circle based on altitude and/or RSSI
|
||
# (Need to tie into Beast-mode port, raw data port, or JSON port to get RSSI).
|
||
# Would need to keep track of these objects and kill them when the aircraft timed-out
|
||
# or sent lat/long. Could switch back to the circle when lat/long times out but
|
||
# altitude is still coming in as well.
|
||
#
|
||
# TODO: Check everywhere that we set a variable to "". Make sure we're not setting
|
||
# it when a sentence including it comes in, then resetting it on all other sentences
|
||
# so that it never gets seen. "squawk_txt" and "squawk" were 2 of these.
|
||
# Check everywhere that $fields[] are checked/saved/used.
|
||
#
|
||
# TODO: Expire data values from hashes XX minutes after receiving them.
|
||
#
|
||
#
|
||
# Invoke it as:
|
||
# ./ads-b.pl planes <passcode> [--circles] [--logging]
|
||
#
|
||
# If you add " --circles" to the end you'll also get a red circle around plane
|
||
# symbols at your current location which represent the area that a plane might
|
||
# be min, if it's only reporting altitude and not lat/long.
|
||
#
|
||
# If you add " --logging" to the end, this script will save the APRS portion of
|
||
# the output to a file called "~/.xastir/logs/planes.log". You can later suck
|
||
# this file back in to see the planes move around the map in hyperspeed. Useful
|
||
# for a quick demo.
|
||
#
|
||
# Injecting them from "planes" or "p1anes" assures that Xastir won't try to adopt
|
||
# the APRS Item packets as its own and re-transmit them.
|
||
#
|
||
#
|
||
# I got the "dump1090" program from here originally:
|
||
# https://github.com/antirez/dump1090
|
||
# Newer fork:
|
||
# https://github.com/MalcolmRobb/dump1090
|
||
# Newer-yet fork, seems to decode much better:
|
||
# https://github.com/mutability/dump1090
|
||
#
|
||
# Invoke Mutability's "dump1090" program like so:
|
||
# "./dump1090 --interactive --net --net-sbs-port 30003 --phase-enhance --oversample --fix --ppm -1 --gain -10 --device-index 0
|
||
#
|
||
#
|
||
# NOTE: There's also "dump978" which listens to 978 MHz ADS-B transmissions. You can
|
||
# invoke "dump1090" as above, then invoke "dump978" like this:
|
||
#
|
||
# rtl_sdr -f 978000000 -s 2083334 -g 0 -d 1 - | ./dump978 | ./uat2esnt | nc -q1 localhost 30001
|
||
#
|
||
# which will convert the 978 MHz packets into ADS-B ES packets and inject them into "dump1090"
|
||
# for decoding. I haven't determined yet whether those packets will come out on "dump1090"'s
|
||
# port 30003 (which this Perl script uses). The above command also uses RTL device 1 instead of 0.
|
||
# If you're only interested in 978 MHz decoding, there's a way to start "dump1090" w/o a
|
||
# device attached, then start "dump978" and connect it to "dump1090".
|
||
#
|
||
# Then invoke this script in another xterm using "planes" as the callsign:
|
||
# "./ads-b.pl planes <passcode>"
|
||
#
|
||
# NOTE: Do NOT use the same callsign as your Xastir instance, else it will
|
||
# "adopt" those APRS Item packets as its own and retransmit them. Code was
|
||
# added to the script to prevent such operation, but using "planes" as the
|
||
# callsign works great too!
|
||
#
|
||
#
|
||
# This script snags packets from port 30003 of "dump1090", parses them, then injects
|
||
# APRS packets into Xastir's UDP port (2023) if "Server Ports" are enabled in Xastir.
|
||
#
|
||
#
|
||
# Port 30001 is an input port (dump978 connects there and dumps data in).
|
||
#
|
||
# Port 30002 outputs in raw format, like:
|
||
# *8D451E8B99019699C00B0A81F36E;
|
||
# Every entry is separated by a simple newline (LF character, hex 0x0A).
|
||
# The "callsign" (6 digits of hex) in chunk #4 = ICAO (airframe identifier).
|
||
# Decoding the sentences:
|
||
# https://www.sussex.ac.uk/webteam/gateway/file.php?name=coote-proj.pdf&site=20]
|
||
# http://adsb-decode-guide.readthedocs.org/en/latest/
|
||
#
|
||
# Port 30003 outputs data is SBS1 (BaseStation) format, and is used by this script.
|
||
# Decoding the sentences:
|
||
# http://woodair.net/SBS/Article/Barebones42_Socket_Data.htm
|
||
# NOTE: I changed the numbers by -1 to fit Perl's "split()" command field numbering.
|
||
# Field 0:
|
||
# Message type (MSG, STA, ID, AIR, SEL or CLK)
|
||
# Field 1:
|
||
# Transmission Type MSG sub types 1 to 8. Not used by other message types.
|
||
# Field 2:
|
||
# Session ID Database Session record number
|
||
# Field 3:
|
||
# AircraftID Database Aircraft record number
|
||
# Field 4:
|
||
# HexIdent Aircraft Mode S hexadecimal code (What we use here... Unique identifier)
|
||
# Field 5:
|
||
# FlightID Database Flight record number
|
||
# Field 6:
|
||
# Date message generated As it says
|
||
# Field 7:
|
||
# Time message generated As it says
|
||
# Field 8:
|
||
# Date message logged As it says
|
||
# Field 9:
|
||
# Time message logged As it says
|
||
# Field 10:
|
||
# Callsign An eight digit flight ID - can be flight number or registration (or even nothing).
|
||
# Field 11:
|
||
# Altitude Mode C altitude. Height relative to 1013.2mb (Flight Level). Not height AMSL..
|
||
# Field 12:
|
||
# GroundSpeed Speed over ground (not indicated airspeed)
|
||
# Field 13:
|
||
# Track Track of aircraft (not heading). Derived from the velocity E/W and velocity N/S
|
||
# Field 14:
|
||
# Latitude North and East positive. South and West negative.
|
||
# Field 15:
|
||
# Longitude North and East positive. South and West negative.
|
||
# Field 16:
|
||
# VerticalRate 64ft resolution
|
||
# Field 17:
|
||
# Squawk Assigned Mode A squawk code.
|
||
# Field 18:
|
||
# Alert (Squawk change) Flag to indicate squawk has changed.
|
||
# Field 19:
|
||
# Emergency Flag to indicate emergency code has been set
|
||
# Field 20:
|
||
# SPI (Ident) Flag to indicate transponder Ident has been activated.
|
||
# Field 21:
|
||
# IsOnGround Flag to indicate ground squat switch is active
|
||
#
|
||
#
|
||
# Squawk Codes:
|
||
# https://en.wikipedia.org/wiki/Transponder_%28aeronautics%29
|
||
#
|
||
#
|
||
# For reference, using 468/frequency (MHz) to get length of 1/2 wave dipole in feet:
|
||
#
|
||
# 1/2 wavelength on 1090 MHz: 5.15"
|
||
# 1/4 wavelength on 1090 MHz: 2.576" or 2 9/16"
|
||
#
|
||
# 1/2 wavelength on 978 MHz: 5.74"
|
||
# 1/4 wavelength on 978 MHz: 2.87" or 2 7/8"
|
||
#
|
||
#
|
||
# NOTE: In the tables below, lines marked with "Per Countries.dat file" are derived
|
||
# from the work of "Alexis" of the Group "https://mode-s.groups.io/g/mode-s"
|
||
# most likely arrived at via observation of Mode-S transponder activity. They are
|
||
# not guaranteed to represent reality in any way. Find the file in the Files section
|
||
# of the group.
|
||
#
|
||
# Most of the rest of the data in the tables was derived from:
|
||
# http://www.kloth.net/radio/icao24alloc.php (Created 2003-01-12, Last modified 2011-06-23).
|
||
# Which in turn came from:
|
||
# "ICAO Annex 10 Volume III Chapter 9. Aircraft Addressing System"
|
||
#
|
||
#
|
||
|
||
|
||
eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
|
||
& eval 'exec perl -S $0 $argv:q'
|
||
if 0;
|
||
|
||
use IO::Socket;
|
||
|
||
|
||
$my_alt = 600; # In feet. Used by probability circles.
|
||
|
||
|
||
# Fetch my lat/long from Xastir config file
|
||
$my_lat = `grep STATION_LAT ~/.xastir/config/xastir.cnf`;
|
||
if (! ($my_lat =~ m/STATION_LAT:/) ) {
|
||
die "Couldn't get STATION_LAT from Xastir config file\n";
|
||
}
|
||
$my_lon = `grep STATION_LONG ~/.xastir/config/xastir.cnf`;
|
||
if (! ($my_lon =~ m/STATION_LONG:/) ) {
|
||
die "Couldn't get STATION_LONG from Xastir config file\n";
|
||
}
|
||
chomp $my_lat;
|
||
chomp $my_lon;
|
||
$my_lat =~ s/STATION_LAT://;
|
||
$my_lon =~ s/STATION_LONG://;
|
||
$my_lat =~ s/(\d+\.\d\d)\d(.)/$1$2/;
|
||
$my_lon =~ s/(\d+\.\d\d)\d(.)/$1$2/;
|
||
#print "$my_lat $my_lon\n";
|
||
|
||
|
||
$udp_client = "xastir_udp_client";
|
||
$dump1090_host = "localhost"; # Server where dump1090 is running
|
||
$dump1090_port = 30003; # 30003 is dump1090 default port
|
||
|
||
$xastir_host = "localhost"; # Server where Xastir is running
|
||
$xastir_port = 2023; # 2023 is Xastir default UDP port
|
||
|
||
$plane_TTL = 1; # Secs after which posits too old to create APRS packets from
|
||
|
||
$log_file = "~/.xastir/logs/planes.log";
|
||
|
||
|
||
$xastir_user = shift;
|
||
if (defined($xastir_user)) {
|
||
chomp $xastir_user;
|
||
}
|
||
if ( (!defined($xastir_user)) || ($xastir_user eq "") ) {
|
||
print "Please enter a callsign for Xastir injection, but not Xastir's callsign/SSID!\n";
|
||
die;
|
||
}
|
||
$xastir_user =~ tr/a-z/A-Z/;
|
||
|
||
$xastir_pass = shift;
|
||
if (defined($xastir_pass)) {
|
||
chomp $xastir_pass;
|
||
}
|
||
if ( (!defined($xastir_pass)) || ($xastir_pass eq "") ) {
|
||
print "Please enter a passcode for Xastir injection\n";
|
||
die;
|
||
}
|
||
|
||
$enable_circles = 0;
|
||
$enable_logging = 0;
|
||
|
||
$flag1 = shift;
|
||
if (defined($flag1)) {
|
||
chomp $flag1;
|
||
if ( ($flag1 ne "") && ($flag1 eq "--circles") ) {
|
||
$enable_circles = 1;
|
||
}
|
||
if ( ($flag1 ne "") && ($flag1 eq "--logging") ) {
|
||
$enable_logging = 1;
|
||
}
|
||
}
|
||
|
||
$flag2 = shift;
|
||
if (defined($flag2)) {
|
||
chomp $flag2;
|
||
if ( ($flag2 ne "") && ($flag2 eq "--circles") ) {
|
||
$enable_circles = 1;
|
||
}
|
||
if ( ($flag2 ne "") && ($flag2 eq "--logging") ) {
|
||
$enable_logging = 1;
|
||
}
|
||
}
|
||
|
||
|
||
# Connect to the server using a tcp socket
|
||
#
|
||
$socket = IO::Socket::INET->new(PeerAddr => $dump1090_host,
|
||
PeerPort => $dump1090_port,
|
||
Proto => "tcp",
|
||
Type => SOCK_STREAM)
|
||
or die "Couldn't connect to $dump1090_host:$dump1090_port : $@\n";
|
||
|
||
|
||
# Flush output buffers often
|
||
select((select(STDOUT), $| = 1)[0]);
|
||
|
||
|
||
# Check Xastir's callsign/SSID to make sure we don't have a collision. This
|
||
# will prevent Xastir adopting the Items as its own and retransmitting them.
|
||
# xastir_udp_client localhost 2023 <callsign> <passcode> -identify
|
||
# Received: WE7U-13
|
||
#
|
||
$injection_call = $xastir_user;
|
||
$injection_call =~ s/-\d+//; # Get rid of dash and numbers
|
||
|
||
$injection_ssid = $xastir_user;
|
||
$injection_ssid =~ s/\w+//; # Get rid of letters
|
||
$injection_ssid =~ s/-//; # Get rid of dash
|
||
if ($injection_ssid eq "") { $injection_ssid = 0; }
|
||
|
||
# Find out Callsign/SSID of Xastir instance
|
||
$result = `$udp_client $xastir_host $xastir_port $xastir_user $xastir_pass -identify`;
|
||
if ($result =~ m/NACK/) {
|
||
die "Received NACK from Xastir: Callsign/Passcode don't match?\n";
|
||
}
|
||
($remote_call, $remote_ssid) = split('-', $result);
|
||
|
||
chomp($remote_call);
|
||
$remote_call =~ s/Received:\s+//;
|
||
|
||
if ( !defined($remote_ssid) ) { $remote_ssid = ""; }
|
||
if ($remote_ssid ne "") { chomp($remote_ssid); }
|
||
if ($remote_ssid eq "") { $remote_ssid = 0; }
|
||
|
||
#print "$remote_call $remote_ssid $injection_call $injection_ssid\n";
|
||
#if ($remote_call eq $injection_call) { print "Call matches\n"; }
|
||
#if ($remote_ssid == $injection_ssid) { print "SSID matches\n"; }
|
||
|
||
if ( ($remote_call eq $injection_call)
|
||
&& ($remote_ssid == $injection_ssid) ) {
|
||
$remote_ssid++;
|
||
$remote_ssid%= 16; # Increment by 1 mod 16
|
||
$xastir_user = "$remote_call-$remote_ssid";
|
||
print "Injection conflict. Corrected. New user = $xastir_user\n";
|
||
}
|
||
|
||
|
||
while (<$socket>)
|
||
{
|
||
|
||
# For testing:
|
||
#
|
||
#$_ = "MSG,3,,,A0CF8D,,,,,,,28000,,,47.87670,-122.27269,,,0,0,0,0";
|
||
#$_ = "MSG,5,,,AD815E,,,,,,,575,,,,,,,,,,";
|
||
#$_ = "MSG,4,,,AAB812,,,,,,,,454,312,,,0,,0,0,0,0";
|
||
#$_ = "MSG,3,,,ABB2D5,,,,,,,40975,,,47.68648,-122.67834,,,0,0,0,0"; # Lat/long/altitude (ft)
|
||
#$_ = "MSG,1,,,A2CB32,,,,,,BOE181 ,,,,,,,,0,0,0,0"; # Tail number or flight number
|
||
#$_ = "MSG,4,,,A0F4F6,,,,,,,,175,152,,,-1152,,0,0,0,0"; # Ground speed (knots)/Track
|
||
|
||
|
||
chomp;
|
||
if ( $_ eq "" ) { next; }
|
||
|
||
|
||
# Sentences have either 10 or 22 fields, assuming they aren't cut off / collided with.
|
||
@fields = split(",");
|
||
|
||
|
||
# Check whether we have a sentence type, message type, and plane ID. If not we're done with this loop iteration
|
||
if ( (!defined($fields[0])) || (!defined($fields[1])) || (!defined($fields[4])) || ($fields[4] eq "") ) { next; }
|
||
|
||
$plane_id = $fields[4];
|
||
$print1 = $plane_id;
|
||
|
||
# Decode the country of registration via this webpage:
|
||
# http://www.kloth.net/radio/icao24alloc.php
|
||
# Add it to the APRS comment field. Remove the Tactical call
|
||
# from the comment field since it is redundant.
|
||
# Match on more specific first (longer string).
|
||
#
|
||
# NOTE: The above link has the countries arranged alphabetically.
|
||
# The code below is arranged in this order (because of the order
|
||
# in which they must be decoded):
|
||
#
|
||
# 1024 addresses (14 bits defined)
|
||
# 4096 addresses (12 bits defined)
|
||
# 32768 addresses (9 bits defined)
|
||
# 262144 addresses (6 bits defined)
|
||
# 1048576 addresses (4 bits defined)
|
||
#
|
||
# The code below is basically the 1024 column from the chart in
|
||
# alphabetical order, then the 2nd column, and so on. The chart
|
||
# should be reviewed against the code periodically, perhaps yearly.
|
||
# You'll see longer bits decoded here and there prior to the normal
|
||
# bit lengths in each section, for instance "Azerbaijan Military"
|
||
# just prior to the "Azerbaijan" entry in the 14-bit address section.
|
||
#
|
||
$registry = "Registry?";
|
||
|
||
# Convert $plane_id to binary string
|
||
$binary_plane_id = unpack ('B*', pack ('H*',$plane_id) );
|
||
|
||
# NOTE: In the code below, more specific addresses (more bits) should
|
||
# appear prior to less specific. The code will snag the first match.
|
||
|
||
|
||
|
||
#
|
||
# 4-bit addresses (column "1048576" in the table):
|
||
# ------------------------------------------------
|
||
if ($binary_plane_id =~ m/^0001/) { $registry = "Russia"; } # Russian Federation
|
||
|
||
elsif ($binary_plane_id =~ m/^1010/) { $registry = "U.S."; # United States
|
||
if ($binary_plane_id =~ m/^1010111/) { $registry = "U.S. Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^1010110111111/) { $registry = "U.S. Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^1010110111110111111/) { $registry = "U.S. Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^10101101111101111101/) { $registry = "U.S. Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^101011011111011111001/) { $registry = "U.S. Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
|
||
|
||
#
|
||
# 6-bit addresses (column "262144" in the table):
|
||
# -----------------------------------------------
|
||
elsif ($binary_plane_id =~ m/^111000/) { $registry = "Argentina";
|
||
if ($binary_plane_id =~ m/^111000010100110000110001/) { $registry = "Argentina Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111000010100110000110010/) { $registry = "Argentina Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111000010100110000110011/) { $registry = "Argentina Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111000010100110001110000/) { $registry = "Argentina Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011111/) { $registry = "Australia";
|
||
if ($binary_plane_id =~ m/^0111111/) { $registry = "Australia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01111101/) { $registry = "Australia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0111110011/) { $registry = "Australia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01111100101/) { $registry = "Australia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^011111001001/) { $registry = "Australia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0111110010001/) { $registry = "Australia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01111100100001/) { $registry = "Australia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0111110010000011/) { $registry = "Australia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01111100100000101/) { $registry = "Australia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^011111001000001001/) { $registry = "Australia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01111100100000100011/) { $registry = "Australia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01111100100000100010111/) { $registry = "Australia Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^111001/) { $registry = "Brazil";
|
||
if ($binary_plane_id =~ m/^11100100000/) { $registry = "Brazil Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^111001001000100110111001/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001000111110111111110/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001000111111001000000/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000000111110110/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000000111110111/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000001110111010/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000001110111011/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000100101101010/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000001011000010/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000001011000011/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000010001000011/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000010001000100/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000010111100111/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000010111101000/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000010111101001/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000100100011111/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000100100100000/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000100100100001/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000001110101000/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000001110101010/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111001001000001110101011/) { $registry = "Brazil Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^110000/) { $registry = "Canada";
|
||
if ($binary_plane_id =~ m/^1100001/) { $registry = "Canada Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011110/) { $registry = "China";
|
||
if ($binary_plane_id =~ m/^0111100000000001000/) { $registry = "China"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0111100000000001/) { $registry = "China Hong Kong"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^011110000000001000/) { $registry = "China Hong Kong"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^011110000000101000/) { $registry = "China Hong Kong"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0111100000001010010/) { $registry = "China Hong Kong"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^011110000000001100111/) { $registry = "China Macau"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^011110000000001101000/) { $registry = "China Macau"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^001110/) { $registry = "France";
|
||
if ($binary_plane_id =~ m/^00111011/) { $registry = "France Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^001110101/) { $registry = "France Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^001110000000001001011011/) { $registry = "France Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^001110000000110100011011/) { $registry = "France Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^001110000001111001111011/) { $registry = "France Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^001110000001110000111011/) { $registry = "France Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^001110000001111000111011/) { $registry = "France Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^001110000001101110111011/) { $registry = "France Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^001110000000110100111011/) { $registry = "France Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^001111/) { $registry = "Germany";
|
||
if ($binary_plane_id =~ m/^0011111010/) { $registry = "Germany Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0011111101/) { $registry = "Germany Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0011111110/) { $registry = "Germany Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^100000/) { $registry = "India";
|
||
if ($binary_plane_id =~ m/^1000000000000010/) { $registry = "India Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^100000000000001100001101/) { $registry = "India Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100000000000000001111000/) { $registry = "India Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100000000000000001111001/) { $registry = "India Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100000000000000011010110/) { $registry = "India Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100000011110000011100011/) { $registry = "India Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^001100/) { $registry = "Italy";
|
||
if ($binary_plane_id =~ m/^0011001111111111/) { $registry = "Italy Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^100001/) { $registry = "Japan";
|
||
if ($binary_plane_id =~ m/^100001111100110000001010/) { $registry = "Japan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100001111100000000000000/) { $registry = "Japan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100001111100000000000001/) { $registry = "Japan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100001111100110000000001/) { $registry = "Japan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100001111100110000001011/) { $registry = "Japan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100001111100110000001000/) { $registry = "Japan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100001111100110000001001/) { $registry = "Japan Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^001101/) { $registry = "Spain";
|
||
if ($binary_plane_id =~ m/^0011011/) { $registry = "Spain Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^00110100/) { $registry = "Spain Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010000/) { $registry = "U.K."; # United Kingdom
|
||
if ($binary_plane_id =~ m/^010000100100010110111010/) { $registry = "Montserrat"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010000100100000111110100/) { $registry = "Falkland Is."; } # Per Countries.dat file specific plane)
|
||
elsif ($binary_plane_id =~ m/^010000100100000111110101/) { $registry = "Falkland Is."; } # Per Countries.dat file specific plane)
|
||
elsif ($binary_plane_id =~ m/^010000100100000111110110/) { $registry = "Falkland Is."; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010000100100000111110111/) { $registry = "Falkland Is."; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010000111011111001011011/) { $registry = "Falkland Is."; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010000000000110111111101/) { $registry = "U.K. Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010000000000110111111110/) { $registry = "U.K. Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010000000000110111111111/) { $registry = "U.K. Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^01000011111100101100111/) { $registry = "U.K. Jersey"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01000011111001110001011/) { $registry = "Isle of Man"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001001000001001101/) { $registry = "Cayman Islands"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001001000001001100/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100000000000000100010/) { $registry = "Cayman Islands"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010000000000000011010/) { $registry = "Cayman Islands"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010000000000000010000/) { $registry = "Cayman Islands"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010000111110011100011/) { $registry = "Isle of Man"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010000100100000100111/) { $registry = "Cayman Islands"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010000100100100011011/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01000010010000010010/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01000010010000100011/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01000010010000010011/) { $registry = "Cayman Islands"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01000010010010100000/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01000000000000001100/) { $registry = "Cayman Islands"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001110111110100/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001111100111001/) { $registry = "Isle of Man"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001001000001100/) { $registry = "Cayman Islands"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001001000001101/) { $registry = "Cayman Islands"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001001000001110/) { $registry = "Cayman Islands"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001001000001000/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001001000010100/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001001000110000/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001001001000111/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010000111110011101/) { $registry = "Isle of Man"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010000100100000101/) { $registry = "Cayman Islands"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010000100100001001/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010000000000000110/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010000000000000001/) { $registry = "Cayman Islands"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010000000000000111/) { $registry = "Cayman Islands"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010000000000000000/) { $registry = "U.K. MoD"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01000011111001111/) { $registry = "Isle of Man"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01000000000000001/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01000000000000010/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001111101010/) { $registry = "Isle of Man"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001001000000/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001001000101/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001001001001/) { $registry = "Bermuda"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010000111110100/) { $registry = "Isle of Man"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001111101/) { $registry = "U.K. Guernsey"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100001111/) { $registry = "U.K. Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
|
||
|
||
#
|
||
# 9-bit addresses (column "32768" in the table):
|
||
# ----------------------------------------------
|
||
elsif ($binary_plane_id =~ m/^000010100/) { $registry = "Algeria";
|
||
if ($binary_plane_id =~ m/^000010100100/) { $registry = "Algeria Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010001000/) { $registry = "Austria";
|
||
if ($binary_plane_id =~ m/^0100010001/) { $registry = "Austria Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010001001/) { $registry = "Belgium";
|
||
if ($binary_plane_id =~ m/^010001001111/) { $registry = "Belgium Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010001001100000111100001/) { $registry = "Belgium Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010001001100000111100101/) { $registry = "Belgium Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010001001100000111100111/) { $registry = "Belgium Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010001001100000111101000/) { $registry = "Belgium Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010001001100000111100011/) { $registry = "Belgium Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010001001100000111100100/) { $registry = "Belgium Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010001001110110110000001/) { $registry = "Belgium Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010001001110110110000010/) { $registry = "Belgium Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010001001110110110000011/) { $registry = "Belgium Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010001010/) { $registry = "Bulgaria";
|
||
if ($binary_plane_id =~ m/^010001010111/) { $registry = "Bulgaria Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010010011/) { $registry = "Czech"; # Czech Republic
|
||
if ($binary_plane_id =~ m/^0100100110000100/) { $registry = "Czech Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011100100/) { $registry = "North Korea"; } # Democratic People's Republic of Korea
|
||
|
||
elsif ($binary_plane_id =~ m/^010001011/) { $registry = "Denmark";
|
||
if ($binary_plane_id =~ m/^0100010111110100/) { $registry = "Denmark Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000000010/) { $registry = "Egypt";
|
||
if ($binary_plane_id =~ m/^00000001000000000111/) { $registry = "Egypt Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^00000001000000001000/) { $registry = "Egypt Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^000000010000000100101100/) { $registry = "Egypt Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010001100/) { $registry = "Finland";
|
||
if ($binary_plane_id =~ m/^0100011001111000/) { $registry = "Finland Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010001101/) { $registry = "Greece";
|
||
if ($binary_plane_id =~ m/^01000110100000/) { $registry = "Greece Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01000110111101011001001/) { $registry = "Greece Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010001101010000010010001/) { $registry = "Greece Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010001101010000010010011/) { $registry = "Greece Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010001101010000010010101/) { $registry = "Greece Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010001110/) { $registry = "Hungary";
|
||
if ($binary_plane_id =~ m/^01000111001111/) { $registry = "Hungary Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01000111011111111111/) { $registry = "Hungary Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^100010100/) { $registry = "Indonesia";
|
||
if ($binary_plane_id =~ m/^100010100010100100000001/) { $registry = "Indonesia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010100010100100000010/) { $registry = "Indonesia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010100000000000100100/) { $registry = "Indonesia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010100000000000101001/) { $registry = "Indonesia Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011100110/) { $registry = "Iran"; # Iran, Islamic Republic of
|
||
if ($binary_plane_id =~ m/^011100110100110100011110/) { $registry = "Iran Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011100101/) { $registry = "Iraq";
|
||
if ($binary_plane_id =~ m/^011100101000000111111/) { $registry = "Iraq Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0111001010000010000000/) { $registry = "Iraq Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01110010100000011111011/) { $registry = "Iraq Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^011100101000000111110101/) { $registry = "Iraq Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011100111/) { $registry = "Israel";
|
||
if ($binary_plane_id =~ m/^0111001110001010/) { $registry = "Israel Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011101000/) { $registry = "Jordan"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^011101001/) { $registry = "Lebanon"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000000011/) { $registry = "Libya"; # Libyan Arab Jamahiriya
|
||
if ($binary_plane_id =~ m/^000000011000001111101011/) { $registry = "Libya Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011101010/) { $registry = "Malaysia";
|
||
if ($binary_plane_id =~ m/^011101010000000101010110/) { $registry = "Malaysia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101010000000011010100/) { $registry = "Malaysia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101010000000000001100/) { $registry = "Malaysia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101010000000000001111/) { $registry = "Malaysia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101010000000000100100/) { $registry = "Malaysia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101010000000000100101/) { $registry = "Malaysia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101010000000000100110/) { $registry = "Malaysia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101010000000000100111/) { $registry = "Malaysia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101010000000010111101/) { $registry = "Malaysia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101010000000011000101/) { $registry = "Malaysia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101010000000011010111/) { $registry = "Malaysia Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000011010/) { $registry = "Mexico";
|
||
if ($binary_plane_id =~ m/^000011010000011000010101/) { $registry = "Mexico Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000011010000010011000010/) { $registry = "Mexico Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000011010000000110111010/) { $registry = "Mexico Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000011010000010101000110/) { $registry = "Mexico Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000011010000010101000111/) { $registry = "Mexico Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000011010000000000011011/) { $registry = "Mexico Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000011010000000000111111/) { $registry = "Mexico Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000011010000001010111001/) { $registry = "Mexico Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000011010000000001000101/) { $registry = "Mexico Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000011010000000001011010/) { $registry = "Mexico Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000011010000011001001111/) { $registry = "Mexico Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000011010000011001001101/) { $registry = "Mexico Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000000100/) { $registry = "Morocco";
|
||
if ($binary_plane_id =~ m/^00000010000000001011/) { $registry = "Morocco Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^000000100000000011000/) { $registry = "Morocco Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^000000100000000001011101/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000001011110/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000010101000/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000010101011/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000010100000/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000010100011/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000010100010/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000010100101/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000010101100/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000001001011/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000001000110/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000001001100/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000001001101/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000001001110/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000000110001/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000000110111/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000000111000/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000000111001/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000000111010/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000000111011/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000000111100/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000000111110/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000001000001/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000011001001/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000100000000011001100/) { $registry = "Morocco Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010010000/) { $registry = "Netherlands"; # Netherlands, Kingdom of the
|
||
if ($binary_plane_id =~ m/^010010000000/) { $registry = "Netherlands Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010010000100000010010101/) { $registry = "Netherlands Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010000100000010010110/) { $registry = "Netherlands Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010000100000010001001/) { $registry = "Netherlands Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010000100000100001111/) { $registry = "Netherlands Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010000100000100010001/) { $registry = "Netherlands Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010000100000100010010/) { $registry = "Netherlands Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010000100000010001011/) { $registry = "Netherlands Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010000100000010000000/) { $registry = "Netherlands Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010000100000010000001/) { $registry = "Netherlands Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010000100000010000010/) { $registry = "Netherlands Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010000100000010100100/) { $registry = "Netherlands Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010000100000010100101/) { $registry = "Netherlands Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010000100/) { $registry = "Aruba"; } # Per Countries.dat file (In Netherlands block)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^110010000/) { $registry = "New Zealand";
|
||
if ($binary_plane_id =~ m/^1100100001111111/) { $registry = "New Zealand Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^110010000010010100011100/) { $registry = "New Zealand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^110010000010010100011101/) { $registry = "New Zealand Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010001111/) { $registry = "Norway";
|
||
if ($binary_plane_id =~ m/^0100011110000001/) { $registry = "Norway Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0100011110000000111/) { $registry = "Norway Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01000111100000001101/) { $registry = "Norway Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010001111000000011001/) { $registry = "Norway Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^01000111100000001100011/) { $registry = "Norway Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011101100/) { $registry = "Pakistan";
|
||
if ($binary_plane_id =~ m/^011101100000000011101001/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100000000000011001/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100001000000110000/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100001000011010110/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100001000011011000/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100001000000111111/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100001000001001011/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100001000001010001/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100001000001010010/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100001000001010100/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100001000001011101/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100011100110000111/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100010101011110011/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100010101111110100/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100000001011110101/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101100010000010011010/) { $registry = "Pakistan Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011101011/) { $registry = "Philipines"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^010010001/) { $registry = "Poland";
|
||
if ($binary_plane_id =~ m/^0100100011011000/) { $registry = "Poland Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^010010001000000110001110/) { $registry = "Poland Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010010010/) { $registry = "Portugal";
|
||
if ($binary_plane_id =~ m/^0100100101111100/) { $registry = "Portugal Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011100011/) { $registry = "South Korea"; # Republic of Korea
|
||
if ($binary_plane_id =~ m/^011100011111101100000001/) { $registry = "South Korea Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100011111101100000010/) { $registry = "South Korea Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100011111100100001010/) { $registry = "South Korea Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100011111100100000110/) { $registry = "South Korea Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010010100/) { $registry = "Romania";
|
||
if ($binary_plane_id =~ m/^010010100011010110101010/) { $registry = "Romania Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010100011010110101011/) { $registry = "Romania Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010100011010110101100/) { $registry = "Romania Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010100001011100101010/) { $registry = "Romania Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010100001100000010110/) { $registry = "Romania Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010100001100000101111/) { $registry = "Romania Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011100010/) { $registry = "Saudi Arabia";
|
||
if ($binary_plane_id =~ m/^0111000100000010011/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0111000100000010100/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^0111000100000011100/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^011100010000001001011/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^011100010000000100001010/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100010000000100001011/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100010000001011100001/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100010000001011100010/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100010000001011010101/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100010000001011100011/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100010000001011100100/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100010000001011111001/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100010000001001011010/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100010000001001011011/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100010000001001011100/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100010000001001011110/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100010000001001011101/) { $registry = "Saudi Arabia Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
# Serbia: See Yugoslavia slot
|
||
|
||
elsif ($binary_plane_id =~ m/^011101101/) { $registry = "Singapore";
|
||
if ($binary_plane_id =~ m/^011101101110001100000011/) { $registry = "Singapore Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101101110001100000010/) { $registry = "Singapore Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101101110001100000100/) { $registry = "Singapore Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101101110001100000001/) { $registry = "Singapore Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011101101000010011000011/) { $registry = "Singapore Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000000001/) { $registry = "South Africa"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^011101110/) { $registry = "Sri Lanka"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^010010101/) { $registry = "Sweden";
|
||
if ($binary_plane_id =~ m/^010010101000000110000001/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000110000010/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000110000011/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000110000100/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000110000101/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000110000110/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000110000111/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000110001000/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000111100110/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000100010100/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000001000011111/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000111110010/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000001000000111/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000111110011/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000111110100/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000111110101/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000011010000/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000111111001/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000111111000/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000000110011001/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010010101000001000101010/) { $registry = "Sweden Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010010110/) { $registry = "Switzerland";
|
||
if ($binary_plane_id =~ m/^010010110111/) { $registry = "Switzerland Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011101111/) { $registry = "Syria"; } # Syrian Arab Republic
|
||
|
||
elsif ($binary_plane_id =~ m/^100010000/) { $registry = "Thailand";
|
||
if ($binary_plane_id =~ m/^100010000101001100110011/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000010001001001000/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000010110100011/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000010110110000/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000010000000001/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000011101011000001/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000000000100111/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000000000101100/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000010110100111/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000010110101000/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000010110101001/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000010110101010/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000010110101011/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000010110101100/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000010110101101/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000010110101110/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000010110101111/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000000001001001/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000101001100110010/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000001110001100001/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000001110001100010/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000001110001100011/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000001110001100100/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010000000110110110110/) { $registry = "Thailand Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000000101/) { $registry = "Tunisia"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^010010111/) { $registry = "Turkey";
|
||
if ($binary_plane_id =~ m/^0100101110000010/) { $registry = "Turkey Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^010100001/) { $registry = "Ukraine"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000011011/) { $registry = "Venezuela";
|
||
if ($binary_plane_id =~ m/^000011011000000000110010/) { $registry = "Venezuela Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000011011000000001100000/) { $registry = "Venezuela Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000011011000000001101100/) { $registry = "Venezuela Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^100010001/) { $registry = "Viet Nam"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^010011000/) { $registry = "Serbia"; # Was Yugoslavia
|
||
if ($binary_plane_id =~ m/^010011000000000101010101/) { $registry = "Serbia Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^111100000/) { $registry = "ICAO(1) Temp. Address"; }
|
||
|
||
|
||
|
||
#
|
||
# 12-bit addresses (column "4096" in the table):
|
||
# ----------------------------------------------
|
||
elsif ($binary_plane_id =~ m/^011100000000/) { $registry = "Afghanistan"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000010010000/) { $registry = "Angola"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000010101000/) { $registry = "Bahamas";
|
||
if ($binary_plane_id =~ m/^000010101000000000100001/) { $registry = "Bahamas Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^100010010100/) { $registry = "Bahrain";
|
||
if ($binary_plane_id =~ m/^100010010100000000010001/) { $registry = "Bahrain Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010010100000000010110/) { $registry = "Bahrain Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^011100000010/) { $registry = "Bangladesh";
|
||
if ($binary_plane_id =~ m/^011100000010110000000010/) { $registry = "Bangladesh Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100000010110000000011/) { $registry = "Bangladesh Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100000010110000000100/) { $registry = "Bangladesh Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^111010010100/) { $registry = "Bolivia";
|
||
if ($binary_plane_id =~ m/^111010010100000011111010/) { $registry = "Bolivia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111010010100000100000100/) { $registry = "Bolivia Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000010011100/) { $registry = "Burkina Faso"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000000110010/) { $registry = "Burundi"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^011100001110/) { $registry = "Cambodia"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000000110100/) { $registry = "Cameroon";
|
||
if ($binary_plane_id =~ m/^000000110100010001000011/) { $registry = "Cameroon Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000110100010001000101/) { $registry = "Cameroon Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000001101100/) { $registry = "Central African Rep."; } # Central African Republic
|
||
|
||
elsif ($binary_plane_id =~ m/^000010000100/) { $registry = "Chad"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^111010000000/) { $registry = "Chile";
|
||
if ($binary_plane_id =~ m/^1110100000000110/) { $registry = "Chile Military"; } # Per Countries.dat file
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000010101100/) { $registry = "Colombia";
|
||
if ($binary_plane_id =~ m/^000010101100000000000101/) { $registry = "Columbia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000010101100000000111011/) { $registry = "Columbia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000010101100000001100110/) { $registry = "Columbia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000010101100000001100111/) { $registry = "Columbia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000010101100000001110001/) { $registry = "Columbia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000010101100000100001100/) { $registry = "Columbia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000010101100000000110110/) { $registry = "Columbia Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000010001100/) { $registry = "Congo DRC"; } # Democratic Republic of the Congo
|
||
|
||
elsif ($binary_plane_id =~ m/^000000110110/) { $registry = "Congo ROC"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000010101110/) { $registry = "Costa Rica"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000000111000/) { $registry = "Cote d Ivoire"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000010110000/) { $registry = "Cuba"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000011000100/) { $registry = "Dominican Republic"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^111010000100/) { $registry = "Ecuador";
|
||
if ($binary_plane_id =~ m/^111010000100000000110101/) { $registry = "Ecuador Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^111010000100000000110000/) { $registry = "Ecuador Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000010110010/) { $registry = "El Salvador"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001000010/) { $registry = "Equatorial Guinea"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001000000/) { $registry = "Ethiopia"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^110010001000/) { $registry = "Fiji"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000000111110/) { $registry = "Gabon"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000010011010/) { $registry = "Gambia"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001000100/) { $registry = "Ghana"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000010110100/) { $registry = "Guatemala"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001000110/) { $registry = "Guinea"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000010110110/) { $registry = "Guyana"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000010111000/) { $registry = "Haiti"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000010111010/) { $registry = "Honduras"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^010011001100/) { $registry = "Iceland"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^010011001010/) { $registry = "Ireland";
|
||
if ($binary_plane_id =~ m/^010011001010000000100011/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010000100111110/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010000100111111/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010000101011000/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010001000000100/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010000111100111/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010000111101000/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010000111101001/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010000111101010/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010000111101011/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010000111101100/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010000111101101/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010000111101110/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010001010001100/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010001010001011/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010001100011010/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010001100011110/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010001100110000/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010001100110001/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010001100110010/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010001100110101/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010011001010001100110110/) { $registry = "Ireland Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000010111110/) { $registry = "Jamaica"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001001100/) { $registry = "Kenya"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^011100000110/) { $registry = "Kuwait"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^011100001000/) { $registry = "Laos"; } # Lao People's Democratic Republic
|
||
|
||
elsif ($binary_plane_id =~ m/^000001010000/) { $registry = "Liberia"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001010100/) { $registry = "Madagascar"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001011000/) { $registry = "Malawi"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001011100/) { $registry = "Mali"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000000000110/) { $registry = "Mozambique"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^011100000100/) { $registry = "Myanmar"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^011100001010/) { $registry = "Nepal"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000011000000/) { $registry = "Nicaragua"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001100010/) { $registry = "Niger"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001100100/) { $registry = "Nigeria";
|
||
if ($binary_plane_id =~ m/^000001100100000001010001/) { $registry = "Nigeria Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000001100100000011110000/) { $registry = "Nigeria Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000011000010/) { $registry = "Panama";
|
||
if ($binary_plane_id =~ m/^000011000010000001001110/) { $registry = "Panama Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^100010011000/) { $registry = "Papua New Guinea"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^111010001000/) { $registry = "Paraguay"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^111010001100/) { $registry = "Peru";
|
||
if ($binary_plane_id =~ m/^111010001100000000000111/) { $registry = "Peru Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000001101110/) { $registry = "Rwanda"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001110000/) { $registry = "Senegal"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001111000/) { $registry = "Somalia"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001111100/) { $registry = "Sudan"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000011001000/) { $registry = "Suriname"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000010001000/) { $registry = "Togo"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000011000110/) { $registry = "Trinidad and Tobago"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000001101000/) { $registry = "Uganda"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^100010010110/) { $registry = "United Arab Emirates";
|
||
if ($binary_plane_id =~ m/^100010010110110000/) { $registry = "United Arab Emirates Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^100010010110000100100110/) { $registry = "United Arab Emirates Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010010110000000101001/) { $registry = "United Arab Emirates Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010010110000000101010/) { $registry = "United Arab Emirates Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010010110000000101011/) { $registry = "United Arab Emirates Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010010110000000101110/) { $registry = "United Arab Emirates Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^100010010110000000101100/) { $registry = "United Arab Emirates Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^000010000000/) { $registry = "Tanzania"; } # United Republic of Tanzania
|
||
|
||
elsif ($binary_plane_id =~ m/^111010010000/) { $registry = "Uruguay"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^100010010000/) { $registry = "Yemen"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^000010001010/) { $registry = "Zambia"; }
|
||
|
||
|
||
|
||
# 14-bit addresses (column "1024" in the table):
|
||
# ----------------------------------------------
|
||
elsif ($binary_plane_id =~ m/^01010000000100/) { $registry = "Albania"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00001100101000/) { $registry = "Antigua and Barbuda"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01100000000000/) { $registry = "Armenia"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01100000000010/) { $registry = "Azerbaijan";
|
||
if ($binary_plane_id =~ m/^011000000000100000000001/) { $registry = "Azerbaijan Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^00001010101000/) { $registry = "Barbados"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01010001000000/) { $registry = "Belarus"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00001010101100/) { $registry = "Belize"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00001001010000/) { $registry = "Benin"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01101000000000/) { $registry = "Bhutan"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01010001001100/) { $registry = "Bosnia and Herzegovina"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00000011000000/) { $registry = "Botswana";
|
||
if ($binary_plane_id =~ m/^000000110000000000010010/) { $registry = "Botswana Military" } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000000110000000000011010/) { $registry = "Botswana Military" } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^10001001010100/) { $registry = "Brunei Darussalam"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00001001011000/) { $registry = "Cape Verde"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00000011010100/) { $registry = "Comoros"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^10010000000100/) { $registry = "Cook Islands"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01010000000111/) { $registry = "Croatia";
|
||
if ($binary_plane_id =~ m/^010100000001110100010011/) { $registry = "Croatia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010100000001111110000101/) { $registry = "Croatia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010100000001111110000110/) { $registry = "Croatia Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^01001100100000/) { $registry = "Cyprus"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00001001100000/) { $registry = "Djibouti"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00100000001000/) { $registry = "Eritrea"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01010001000100/) { $registry = "Estonia"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01010001010000/) { $registry = "Georgia"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00001100110000/) { $registry = "Grenada"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00000100100000/) { $registry = "Guinea-Bissau"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01101000001100/) { $registry = "Kazakhstan"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^11001000111000/) { $registry = "Kiribati"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01100000000100/) { $registry = "Kyrgyzstan"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01010000001011/) { $registry = "Latvia"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00000100101000/) { $registry = "Lesotho"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01010000001111/) { $registry = "Lithuania";
|
||
if ($binary_plane_id =~ m/^010100000011111111010010/) { $registry = "Lithuania Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010100000011111111010011/) { $registry = "Lithuania Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^01001101000000/) { $registry = "Luxembourg";
|
||
if ($binary_plane_id =~ m/^0100110100000011110/) { $registry = "NATO"; } # Per Countries.dat file (In Luxembourg block)
|
||
}
|
||
|
||
# Also see NATO in the Luxembourg block above
|
||
elsif ($binary_plane_id =~ m/^010001110111111111110001/) { $registry = "NATO Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010001110111111111110010/) { $registry = "NATO Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010001110111111111110011/) { $registry = "NATO Military"; } # Per Countries.dat file (specific plane)
|
||
|
||
|
||
elsif ($binary_plane_id =~ m/^00000101101000/) { $registry = "Maldives"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01001101001000/) { $registry = "Malta";
|
||
if ($binary_plane_id =~ m/^010011010010000001011000/) { $registry = "Malta Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^10010000000000/) { $registry = "Marshall Islands"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00000101111000/) { $registry = "Mauritania"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00000110000000/) { $registry = "Mauritius"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01101000000100/) { $registry = "Micronesia"; } # Micronesia, Federated States of
|
||
|
||
elsif ($binary_plane_id =~ m/^01001101010000/) { $registry = "Monaco"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01101000001000/) { $registry = "Mongolia"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01010001011000/) { $registry = "Montenegro"; } # Per Countries.dat file
|
||
|
||
elsif ($binary_plane_id =~ m/^00100000000100/) { $registry = "Namibia"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^11001000101000/) { $registry = "Nauru"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01110000110000/) { $registry = "Oman";
|
||
if ($binary_plane_id =~ m/^01110000110000000111/) { $registry = "Oman Military"; } # Per Countries.dat file
|
||
elsif ($binary_plane_id =~ m/^011100001100000010001100/) { $registry = "Oman Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^011100001100000010001011/) { $registry = "Oman Military"; } # Per Countries.dat file (specific plane)
|
||
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^01101000010000/) { $registry = "Palau"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00000110101000/) { $registry = "Qatar";
|
||
if ($binary_plane_id =~ m/^000001101010001001001010/) { $registry = "Qatar Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000001101010001001001011/) { $registry = "Qatar Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000001101010001001001100/) { $registry = "Qatar Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000001101010001001001101/) { $registry = "Qatar Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000001101010000011011001/) { $registry = "Qatar Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000001101010000011011010/) { $registry = "Qatar Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000001101010001001001000/) { $registry = "Qatar Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000001101010001001001001/) { $registry = "Qatar Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000001101010001001010101/) { $registry = "Qatar Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^000001101010001001010110/) { $registry = "Qatar Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^01010000010011/) { $registry = "Moldova"; } # Republic of Moldova
|
||
|
||
elsif ($binary_plane_id =~ m/^11001000110000/) { $registry = "Saint Lucia"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00001011110000/) { $registry = "Saint Vincent and the Grenadines"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^10010000001000/) { $registry = "Samoa"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01010000000000/) { $registry = "San Marino"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00001001111000/) { $registry = "Sao Tome and Principe"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00000111010000/) { $registry = "Seychelles"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00000111011000/) { $registry = "Sierra Leone"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01010000010111/) { $registry = "Slovakia";
|
||
if ($binary_plane_id =~ m/^010100000101111101101100/) { $registry = "Slovakia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010100000101111101100011/) { $registry = "Slovakia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010100000101111101100001/) { $registry = "Slovakia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010100000101111101100010/) { $registry = "Slovakia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010100000101111101101010/) { $registry = "Slovakia Military"; } # Per Countries.dat file (specific plane)
|
||
elsif ($binary_plane_id =~ m/^010100000101111101101000/) { $registry = "Slovakia Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^01010000011011/) { $registry = "Slovenia";
|
||
if ($binary_plane_id =~ m/^0101000001101111/) { $registry = "Slovenia Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^10001001011100/) { $registry = "Solomon Islands"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00000111101000/) { $registry = "Swaziland"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01010001010100/) { $registry = "Tajikistan"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01010001001000/) { $registry = "Macedonia"; } # The former Yugoslav Republic of Macedonia
|
||
|
||
elsif ($binary_plane_id =~ m/^11001000110100/) { $registry = "Tonga"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^01100000000110/) { $registry = "Turkmenistan";
|
||
if ($binary_plane_id =~ m/^011000000001100001100010/) { $registry = "Turkmenistan Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
|
||
elsif ($binary_plane_id =~ m/^01010000011111/) { $registry = "Uzbekistan"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^11001001000000/) { $registry = "Vanuatu"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^00000000010000/) { $registry = "Zimbabwe"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^10001001100100/) { $registry = "Taiwan"; # Per Countries.dat file (In ICAO(2) Flight Safety block below)
|
||
if ($binary_plane_id =~ m/^100010011001000101100000/) { $registry = "Taiwan Military"; } # Per Countries.dat file (specific plane)
|
||
}
|
||
elsif ($binary_plane_id =~ m/^10001001100100/) { $registry = "ICAO(2) Flight Safety"; }
|
||
|
||
elsif ($binary_plane_id =~ m/^11110000100100/) { $registry = "ICAO(2) Flight Safety"; }
|
||
|
||
# NOTE: ICAO blocks are different in Countries.dat file
|
||
|
||
|
||
#
|
||
# Blocks of addresses for anything that hasn't matched so far, from <http://www.kloth.net/radio/icao24alloc.php> :
|
||
# ------------------------------------------------------------
|
||
elsif ($binary_plane_id =~ m/^00100/) { $registry = "Africa Region"; } # AFI Region
|
||
elsif ($binary_plane_id =~ m/^00101/) { $registry = "South America Region"; } # SAM Region
|
||
elsif ($binary_plane_id =~ m/^0101/) { $registry = "Europe/North Atlantic Regions"; } # EUR and NAT Regions
|
||
elsif ($binary_plane_id =~ m/^01100/) { $registry = "Middle East Region"; } # MID Region
|
||
elsif ($binary_plane_id =~ m/^01101/) { $registry = "Asia Region"; } # ASIA Region
|
||
elsif ($binary_plane_id =~ m/^1001/) { $registry = "North America/Pacific Regions"; } # NAM and PAC Regions
|
||
elsif ($binary_plane_id =~ m/^111011/) { $registry = "Carribean Region"; } # CAR Region
|
||
elsif ($binary_plane_id =~ m/^1011/) { $registry = "Country Code RESERVED"; } # Reserved for future use
|
||
elsif ($binary_plane_id =~ m/^1101/) { $registry = "Country Code RESERVED"; } # Reserved for future use
|
||
elsif ($binary_plane_id =~ m/^1111/) { $registry = "Country Code RESERVED"; } # Reserved for future use
|
||
elsif ($binary_plane_id =~ m/^000000000000000000000000/) { $registry = "Country Code DISALLOWED"; } # Shall not be assigned
|
||
elsif ($binary_plane_id =~ m/^111111111111111111111111/) { $registry = "Country Code DISALLOWED"; } # Shall not be assigned
|
||
|
||
|
||
|
||
# Parse altitude if MSG Type 2, 3, 5, 6, or 7, save in hash.
|
||
$print2 = " ";
|
||
if ( $fields[1] == 2
|
||
|| $fields[1] == 3
|
||
|| $fields[1] == 5
|
||
|| $fields[1] == 6
|
||
|| $fields[1] == 7 ) {
|
||
|
||
if ( defined($fields[11])
|
||
&& $fields[11] ne ""
|
||
&& $fields[11] ne 0 ) {
|
||
|
||
$old = "";
|
||
if (defined($altitude{$plane_id})) {
|
||
$old = $altitude{$plane_id};
|
||
}
|
||
|
||
# Save new altitude
|
||
$altitude{$plane_id} = sprintf("%06d", $fields[11]);
|
||
|
||
if ($old ne $altitude{$plane_id}) {
|
||
$print2 = sprintf("%5sft", $fields[11]);
|
||
$newdata{$plane_id}++; # Found a new altitude!
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
# Parse ground speed and track if MSG Type 2 or 4, save in hash.
|
||
$print3 = " ";
|
||
$print4 = " ";
|
||
if ( $fields[1] == 4 || $fields[1] == 2 ) {
|
||
|
||
if ( defined($fields[12]) && $fields[12] ne "" ) {
|
||
|
||
$old = "";
|
||
if (defined($groundspeed{$plane_id})) {
|
||
$old = $groundspeed{$plane_id};
|
||
}
|
||
|
||
# Save new ground speed
|
||
$groundspeed{$plane_id} = $fields[12];
|
||
|
||
if ($old ne $groundspeed{$plane_id}) {
|
||
$print3 = sprintf("%3skn", $fields[12]);
|
||
$newdata{$plane_id}++; # Found a new ground speed!
|
||
}
|
||
}
|
||
|
||
if ( defined($fields[13]) && $fields[13] ne "" ) {
|
||
|
||
$old = "";
|
||
if (defined($track{$plane_id})) {
|
||
$old = $track{$plane_id};
|
||
}
|
||
|
||
# Save new track
|
||
$track{$plane_id} = $fields[13];
|
||
|
||
if ($old ne $track{$plane_id}) {
|
||
$print4 = sprintf("%3s<33>", $fields[13]);
|
||
$newdata{$plane_id}++; # Found a new track!
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
# Parse lat/long if MSG Type 2 or 3, save in hash.
|
||
$print5 = " ";
|
||
if ( ( $fields[1] == 2 || $fields[1] == 3 )
|
||
&& defined($fields[14]) && $fields[14] ne ""
|
||
&& defined($fields[15]) && $fields[15] ne "" ) {
|
||
|
||
$oldlat = "";
|
||
if (defined($lat{$plane_id})) {
|
||
$oldlat = $lat{$plane_id};
|
||
}
|
||
|
||
$lat = $fields[14] * 1.0;
|
||
if ($lat >= 0.0) {
|
||
$NS = 'N';
|
||
} else {
|
||
$NS = 'S';
|
||
$lat = abs($lat);
|
||
}
|
||
$latdeg = int($lat);
|
||
$latmins = $lat - $latdeg;
|
||
$latmins2 = $latmins * 60.0;
|
||
# Save new latitude
|
||
$lat{$plane_id} = sprintf("%02d%05.2f%s", $latdeg, $latmins2, $NS);
|
||
|
||
$oldlon = "";
|
||
if (defined($lon{$plane_id})) {
|
||
$oldlon = $lon{$plane_id};
|
||
}
|
||
|
||
$lon = $fields[15] * 1.0;
|
||
if ($lon >= 0.0) {
|
||
$EW = 'E';
|
||
} else {
|
||
$EW = 'W';
|
||
$lon = abs($lon);
|
||
}
|
||
$londeg = int($lon);
|
||
$lonmins = $lon - $londeg;
|
||
$lonmins2 = $lonmins * 60.0;
|
||
# Save new longitude
|
||
$lon{$plane_id} = sprintf("%03d%05.2f%s", $londeg, $lonmins2, $EW);
|
||
|
||
if ( ($oldlat ne $lat{$plane_id}) || ($oldlon ne $lon{$plane_id}) ) {
|
||
$print5 = sprintf("%8s,%9s", $lat{$plane_id},$lon{$plane_id});
|
||
|
||
# Save most recent posit time
|
||
$last_posit_time{$plane_id} = time();
|
||
|
||
$newdata{$plane_id}++; # Found a new lat/lon!
|
||
|
||
# Tactical callsign:
|
||
# Have new lat/lon. Check whether we have a tactical call
|
||
# already defined. If not, assign one that includes
|
||
# the plane_id and the country of registration.
|
||
if ( !defined($tactical{$plane_id}) ) {
|
||
|
||
# Assign tactical call = $plane_id + registry
|
||
# Max tactical call in Xastir is 57 chars (56 + terminator?)
|
||
#
|
||
$tactical{$plane_id} = $plane_id . " (" . $registry . ")";
|
||
$tactical{$plane_id} =~ s/\s+/ /g; # Change multiple spaces to one
|
||
$aprs = $xastir_user . '>' . "APRS::TACTICAL :" . $plane_id . "=" . $tactical{$plane_id};
|
||
|
||
$print6 = sprintf("%-18s", $tactical{$plane_id});
|
||
print("$print1 $print2 $print3 $print4 $print6 $aprs\n");
|
||
|
||
# xastir_udp_client <hostname> <port> <callsign> <passcode> {-identify | [-to_rf] <message>}
|
||
$result = `$udp_client $xastir_host $xastir_port $xastir_user $xastir_pass \"$aprs\"`;
|
||
if ($result =~ m/NACK/) {
|
||
die "Received NACK from Xastir: Callsign/Passcode don't match?\n";
|
||
}
|
||
|
||
if ($enable_logging == 1) {
|
||
`echo \"$aprs\" >> $log_file`;
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
# Save tail or flight number in hash if MSG Type 1 or "ID" sentence.
|
||
if ( ($fields[0] eq "ID" || $fields[1] == 1)
|
||
&& defined($fields[10])
|
||
&& $fields[10] ne "????????"
|
||
&& $fields[10] ne ""
|
||
&& !($fields[10] =~ m/^\s+$/) ) {
|
||
|
||
$old = "";
|
||
if (defined($tail{$plane_id})) {
|
||
$old = $tail{$plane_id};
|
||
}
|
||
|
||
# Save new tail number or flight number, assign tactical call
|
||
$temp_tail = $fields[10];
|
||
$temp_tail =~ s/[^a-zA-Z0-9,]//g; # Filter out all but alphanumeric chars
|
||
$tail{$plane_id} = $temp_tail;
|
||
$tail{$plane_id} =~ s/\s//g; # Remove spaces
|
||
|
||
if ($old ne $tail{$plane_id}) {
|
||
$print6 = sprintf("%-18s", $temp_tail);
|
||
$newdata{$plane_id}++; # Found a new tail or flight number!
|
||
|
||
# Assign tactical call = tail number or flight number + registry (if defined)
|
||
# Max tactical call in Xastir is 57 chars (56 + terminator?)
|
||
#
|
||
$tactical{$plane_id} = $temp_tail;
|
||
if ($registry ne "Registry?") {
|
||
$tactical{$plane_id} = $temp_tail . " (" . $registry . ")";
|
||
$tactical{$plane_id} =~ s/\s+/ /g; # Change multiple spaces to one
|
||
}
|
||
$aprs = $xastir_user . '>' . "APRS::TACTICAL :" . $plane_id . "=" . $tactical{$plane_id};
|
||
|
||
print("$print1 $print2 $print3 $print4 $print6 $aprs\n");
|
||
|
||
# xastir_udp_client <hostname> <port> <callsign> <passcode> {-identify | [-to_rf] <message>}
|
||
$result = `$udp_client $xastir_host $xastir_port $xastir_user $xastir_pass \"$aprs\"`;
|
||
if ($result =~ m/NACK/) {
|
||
die "Received NACK from Xastir: Callsign/Passcode don't match?\n";
|
||
}
|
||
|
||
if ($enable_logging == 1) {
|
||
`echo \"$aprs\" >> $log_file`;
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|
||
$squawk_txt = "";
|
||
if ( defined($fields[17]) && ($fields[17] ne "") ) {
|
||
|
||
$old = "";
|
||
if (defined($squawk{$plane_id})) {
|
||
$old = $squawk{$plane_id};
|
||
}
|
||
$squawk{$plane_id} = $fields[17];
|
||
|
||
if ($old ne $squawk{$plane_id}) {
|
||
$newdata{$plane_id}++; # Found a new squawk!
|
||
}
|
||
}
|
||
if (defined($squawk{$plane_id})) {
|
||
$squawk_txt = sprintf(" SQUAWK=%04d", $squawk{$plane_id});
|
||
}
|
||
|
||
|
||
|
||
$emerg_txt = "";
|
||
$emergency = "0";
|
||
if ( defined($fields[19]) ) {
|
||
$emergency = $fields[19];
|
||
}
|
||
if ( $emergency eq "-1" ) { # Emergency of some type
|
||
$emerg_txt = " EMERGENCY="; # Keyword triggers Xastir's emergency mode!!!
|
||
|
||
# Check squawk code
|
||
if ( defined($squawk{$plane_id}) ) {
|
||
if ($squawk{$plane_id} eq "7500") { # Unlawful Interference (hijacking)
|
||
$emerg_txt = $emerg_txt . "Hijacking";
|
||
}
|
||
if ($squawk{$plane_id} eq "7600") { # Communications failure/problems
|
||
$emerg_txt = $emerg_txt . "Comms_Failure";
|
||
}
|
||
if ($squawk{$plane_id} eq "7700") { # General Emergency
|
||
$emerg_txt = $emerg_txt . "General";
|
||
}
|
||
}
|
||
$newdata{$plane_id}++;
|
||
}
|
||
|
||
|
||
$onGroundTxt = "";
|
||
if ( defined($fields[21]) ) {
|
||
$onGround = $fields[21];
|
||
if ($onGround eq "-1") {
|
||
$onGroundTxt = " On_Ground";
|
||
$newdata{$plane_id}++;
|
||
}
|
||
}
|
||
|
||
|
||
$newtrack = "360";
|
||
if ( defined($track{$plane_id}) ) {
|
||
if ($track{$plane_id} == 0) {
|
||
$newtrack = "360";
|
||
}
|
||
else {
|
||
$newtrack = sprintf("%03d", $track{$plane_id} );
|
||
}
|
||
}
|
||
|
||
$newspeed = "000";
|
||
if ( defined ($groundspeed{$plane_id}) ) {
|
||
$newspeed = sprintf("%03d", $groundspeed{$plane_id} );
|
||
if ( ($groundspeed{$plane_id} > 0) && ($groundspeed{$plane_id} < 57) ) {
|
||
$symbol = "X"; # Switch to helicopter symbol
|
||
}
|
||
if ($groundspeed{$plane_id} > 126) {
|
||
$symbol = "^"; # Switch to large aircraft symbol
|
||
}
|
||
}
|
||
|
||
$newtail = "";
|
||
if ( defined($tail{$plane_id}) ) {
|
||
$newtail = " $tail{$plane_id}";
|
||
}
|
||
|
||
# Auto-switch the symbol based on speed/altitude.
|
||
# Symbols:
|
||
# Small airplane = /'
|
||
# Helicopter = /X
|
||
# Large aircraft = /^
|
||
# Aircraft = \^ (Not used in this script)
|
||
#
|
||
# Cessna 150: 57 knots minimum.
|
||
# Twin Cessna: 215 knots maximum.
|
||
# UH-1N Huey: 110 knots maximum.
|
||
# Landing speed Boeing 757: 126 knots.
|
||
#
|
||
# If <= 10000 feet and 1 - 56 knots: Helicopter
|
||
# If <= 20000 feet and 57 - 125 knots: Small aircraft
|
||
# If > 20000 feet : Large aircraft
|
||
# if > 126 knots: Large aircraft
|
||
#
|
||
$symbol = "'"; # Start with small aircraft symbol
|
||
|
||
$newalt = "";
|
||
if ( defined($altitude{$plane_id}) ) {
|
||
$newalt = " /A=$altitude{$plane_id}";
|
||
|
||
if ($altitude{$plane_id} > 20000) {
|
||
$symbol = "^"; # Switch to large aircraft symbol
|
||
}
|
||
elsif ($symbol eq "^") {
|
||
# Do nothing, already switched to large aircraft due to speed
|
||
}
|
||
elsif ($symbol eq "X" && $altitude{$plane_id} > 10000) {
|
||
$symbol = "'"; # Switch to small aircraft from helicopter
|
||
}
|
||
}
|
||
|
||
|
||
|
||
# Above we parsed some message that changed some of our data, send out the
|
||
# new APRS string if we have enough data defined.
|
||
#
|
||
if ( defined($newdata{$plane_id})
|
||
&& $newdata{$plane_id} ) {
|
||
|
||
# Count percentage of planes with lat/lon out of total planes that have altitude listed.
|
||
# This should show an approximate implementation percentage for ADS-B transponders.
|
||
$alt_planes = 0;
|
||
$lat_planes = 0;
|
||
$print_adsb_percentage = "";
|
||
foreach $key (keys %lat) {
|
||
$lat_planes++;
|
||
}
|
||
foreach $key (keys %altitude) {
|
||
$alt_planes++;
|
||
}
|
||
if ($alt_planes != 0) {
|
||
$adsb_percentage = ( ($lat_planes * 1.0) / $alt_planes) * 100.0;
|
||
$print_adsb_percentage = sprintf("ADS-B:%-1.1f%% ($lat_planes/$alt_planes)", $adsb_percentage);
|
||
}
|
||
|
||
|
||
# Do we have a lat/lon and is it recent enough?
|
||
if ( defined($lat{$plane_id})
|
||
&& defined($lon{$plane_id}) ) {
|
||
|
||
#
|
||
# Yes we have a lat/lon
|
||
#
|
||
|
||
# Check the age of the lat/lon
|
||
$age = time() - $last_posit_time{$plane_id};
|
||
if ( $age > $plane_TTL ) {
|
||
#
|
||
# We have a lat/lon but it is too old
|
||
#
|
||
$print_age1 = sprintf("(%s%s)", $age, "s");
|
||
$print_age2 = sprintf("%18s", $print_age1);
|
||
$print_aprs = sprintf("%-96s", "$newtail$emerg_txt$squawk_txt$onGroundTxt ($registry)");
|
||
print("$print1 $print2 $print3 $print4 $print_age2 $print_aprs $print_adsb_percentage\n");
|
||
|
||
}
|
||
else {
|
||
#
|
||
# We have a recent lat/lon
|
||
#
|
||
$aprs="$xastir_user>APRS:)$plane_id!$lat{$plane_id}/$lon{$plane_id}$symbol$newtrack/$newspeed$newalt$newtail$emerg_txt$squawk_txt$onGroundTxt ($registry)";
|
||
$print_aprs = sprintf("%-95s", $aprs);
|
||
if ( $age > 0 # Lat/lon is aging a bit
|
||
|| $print5 eq " " ) { # Didn't parse lat/lon this time
|
||
$print_age1 = sprintf("%s%s", $age, "s");
|
||
$print_age2 = sprintf("%18s", $print_age1);
|
||
print("$print1 $print2 $print3 $print4 $print_age2 $print_aprs $print_adsb_percentage\n");
|
||
}
|
||
else {
|
||
print("$print1 $print2 $print3 $print4 $print5 $print_aprs $print_adsb_percentage\n");
|
||
}
|
||
|
||
# xastir_udp_client <hostname> <port> <callsign> <passcode> {-identify | [-to_rf] <message>}
|
||
# $result = `$udp_client $xastir_host $xastir_port $xastir_user $xastir_pass \"$aprs [Pmin0.0,]\"`;
|
||
$result = `$udp_client $xastir_host $xastir_port $xastir_user $xastir_pass \"$aprs\"`;
|
||
if ($result =~ m/NACK/) {
|
||
die "Received NACK from Xastir: Callsign/Passcode don't match?\n";
|
||
}
|
||
|
||
if ($enable_logging == 1) {
|
||
`echo \"$aprs\" >> $log_file`;
|
||
}
|
||
|
||
}
|
||
}
|
||
else {
|
||
#
|
||
# No, we have no lat/lon
|
||
#
|
||
$print_age = sprintf("%18s", "-");
|
||
$print_aprs = sprintf("%-96s", "$newtail$emerg_txt$squawk_txt$onGroundTxt ($registry)");
|
||
print("$print1 $print2 $print3 $print4 $print_age$print_aprs $print_adsb_percentage\n");
|
||
|
||
if ($enable_circles == 1) {
|
||
$radius = 10.0; # Set a default of 10 miles
|
||
if ( defined($altitude{$plane_id}) ) {
|
||
$radius = ( ( ($altitude{$plane_id} - $my_alt) / 1000 ) * 2 ); # 40k = 80 miles, 20k = 40 miles, 10k = 20 miles, 1k = 2 miles
|
||
}
|
||
$print_radius = sprintf("%2.1f", $radius);
|
||
$aprs="$xastir_user>APRS:)$plane_id!$my_lat/$my_lon$symbol$newtrack/$newspeed$newalt$newtail$emerg_txt$squawk_txt$onGroundTxt ($registry) [Pmin$print_radius,]";
|
||
# print "$aprs\n";
|
||
|
||
# xastir_udp_client <hostname> <port> <callsign> <passcode> {-identify | [-to_rf] <message>}
|
||
$result = `$udp_client $xastir_host $xastir_port $xastir_user $xastir_pass \"$aprs\"`;
|
||
if ($result =~ m/NACK/) {
|
||
die "Received NACK from Xastir: Callsign/Passcode don't match?\n";
|
||
}
|
||
|
||
if ($enable_logging == 1) {
|
||
`echo \"$aprs\" >> $log_file`;
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
# Reset the newdata flag
|
||
$newdata{$plane_id} = 0;
|
||
}
|
||
|
||
|
||
# Convert altitude to altitude above MSL instead of altitude from a reference barometric reading?
|
||
# Info: http://forums.flyer.co.uk/viewtopic.php?t=16375
|
||
# How many millibar in 1 feet of air? The answer is 0.038640888 @ 0C (25.879232 ft/mb).
|
||
# How many millibar in 1 foot of air [15 <20>C]? The answer is 0.036622931 @ 15C (27.3053 ft/mb).
|
||
# Flight Level uses a pressure of 29.92 "Hg (1,013.2 mb).
|
||
# Yesterday the pressure here was about 1013, so the altitudes looked right on. Today the planes
|
||
# are reporting ~500' higher via ADS-B when landing at Paine Field. Turns out the pressure today
|
||
# is 21mb lower, which equates to an additional 573' of altitude reported using the 15C figure!
|
||
#
|
||
# /A=aaaaaa feet
|
||
# CSE/SPD, i.e. 180/999 (speed in knots, direction is WRT true North), if unknown: .../...
|
||
# )AIDV#2!4903.50N/07201.75WA
|
||
# ;LEADERVVV*092345z4903.50N/07201.75W>088/036
|
||
# )A19E61!4903.50N/07201.75W' 356/426 /A=29275 # Example Small Airplane Object
|
||
|
||
|
||
# end of while loop
|
||
}
|
||
|
||
close($socket);
|
||
|
||
|