Merge branch 'eried:next' into next

This commit is contained in:
Brumi-2021 2022-03-26 21:56:38 +01:00 committed by GitHub
commit a7c7495428
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 35506 additions and 35343 deletions

View File

@ -159,6 +159,7 @@ set(CPPSRC
capture_thread.cpp
clock_manager.cpp
core_control.cpp
database.cpp
de_bruijn.cpp
#emu_cc1101.cpp
rfm69.cpp

View File

@ -108,10 +108,6 @@ ADSBRxAircraftDetailsView::ADSBRxAircraftDetailsView(
) : entry_copy(entry),
on_close_(on_close)
{
char file_buffer[32] { 0 };
bool found = false;
size_t number_of_icao_codes = 0;
std::string icao_code;
add_children({
&labels,
@ -130,46 +126,22 @@ ADSBRxAircraftDetailsView::ADSBRxAircraftDetailsView(
std::unique_ptr<ADSBLogger> logger { };
//update(entry_copy);
icao_code = to_string_hex(entry_copy.ICAO_address, 6);
text_icao_address.set(to_string_hex(entry_copy.ICAO_address, 6));
// Try getting the aircraft information from icao24.db
auto result = db_file.open("ADSB/icao24.db");
if (!result.is_valid()) {
// determine number of ICAO24 codes in file, total size / (single index + record size)
number_of_icao_codes = (db_file.size() / 153);
icao_code = to_string_hex(entry_copy.ICAO_address, 6);
// binary search
int first = 0, // First search element
last = number_of_icao_codes - 1, // Last search element
middle, // Mid point of search
position = -1; // Position of search value
while (!found && first <= last) {
middle = (first + last) / 2; // Calculate mid point
db_file.seek(middle * 7);
db_file.read(file_buffer, 6);
if (file_buffer == icao_code) { // If value is found at mid
found = true;
position = middle;
}
else if (file_buffer > icao_code) // If value is in lower half
last = middle - 1;
else
first = middle + 1; // If value is in upper half
}
if (position > -1) {
db_file.seek((number_of_icao_codes * 7) + (position * 146)); // seek starting after index
db_file.read(file_buffer, 9);
text_registration.set(file_buffer);
db_file.read(file_buffer, 33);
text_manufacturer.set(file_buffer);
db_file.read(file_buffer, 33);
text_model.set(file_buffer);
db_file.read(file_buffer, 5); // ICAO type decripton
if(strlen(file_buffer) == 3) {
switch(file_buffer[0]) {
return_code = db.retrieve_aircraft_record(&aircraft_record, icao_code);
switch(return_code) {
case DATABASE_RECORD_FOUND:
text_registration.set(aircraft_record.aircraft_registration);
text_manufacturer.set(aircraft_record.aircraft_manufacturer);
text_model.set(aircraft_record.aircraft_model);
text_owner.set(aircraft_record.aircraft_owner);
text_operator.set(aircraft_record.aircraft_operator);
// Check for ICAO type, e.g. L2J
if(strlen(aircraft_record.icao_type) == 3) {
switch(aircraft_record.icao_type[0]) {
case 'L':
text_type.set("Landplane");
break;
@ -189,8 +161,8 @@ ADSBRxAircraftDetailsView::ADSBRxAircraftDetailsView(
text_type.set("Tilt-wing aircraft");
break;
}
text_number_of_engines.set(std::string(1, file_buffer[1]));
switch(file_buffer[2]) {
text_number_of_engines.set(std::string(1, aircraft_record.icao_type[1]));
switch(aircraft_record.icao_type[2]) {
case 'P':
text_engine_type.set("Piston engine");
break;
@ -206,30 +178,22 @@ ADSBRxAircraftDetailsView::ADSBRxAircraftDetailsView(
}
}
// check for ICAO type designator
else if(strlen(file_buffer) == 4) {
if(strcmp(file_buffer,"SHIP") == 0) text_type.set("Airship");
else if(strcmp(file_buffer,"BALL") == 0) text_type.set("Balloon");
else if(strcmp(file_buffer,"GLID") == 0) text_type.set("Glider / sailplane");
else if(strcmp(file_buffer,"ULAC") == 0) text_type.set("Micro/ultralight aircraft");
else if(strcmp(file_buffer,"GYRO") == 0) text_type.set("Micro/ultralight autogyro");
else if(strcmp(file_buffer,"UHEL") == 0) text_type.set("Micro/ultralight helicopter");
else if(strcmp(file_buffer,"SHIP") == 0) text_type.set("Airship");
else if(strcmp(file_buffer,"PARA") == 0) text_type.set("Powered parachute/paraplane");
// Check for ICAO type designator
else if(strlen(aircraft_record.icao_type) == 4) {
if(strcmp(aircraft_record.icao_type,"SHIP") == 0) text_type.set("Airship");
else if(strcmp(aircraft_record.icao_type,"BALL") == 0) text_type.set("Balloon");
else if(strcmp(aircraft_record.icao_type,"GLID") == 0) text_type.set("Glider / sailplane");
else if(strcmp(aircraft_record.icao_type,"ULAC") == 0) text_type.set("Micro/ultralight aircraft");
else if(strcmp(aircraft_record.icao_type,"GYRO") == 0) text_type.set("Micro/ultralight autogyro");
else if(strcmp(aircraft_record.icao_type,"UHEL") == 0) text_type.set("Micro/ultralight helicopter");
else if(strcmp(aircraft_record.icao_type,"SHIP") == 0) text_type.set("Airship");
else if(strcmp(aircraft_record.icao_type,"PARA") == 0) text_type.set("Powered parachute/paraplane");
}
db_file.read(file_buffer, 33);
text_owner.set(file_buffer);
db_file.read(file_buffer, 33);
text_operator.set(file_buffer);
} else {
text_registration.set("Unknown");
text_manufacturer.set("Unknown");
}
} else {
break;
case DATABASE_NOT_FOUND:
text_manufacturer.set("No icao24.db file");
break;
}
button_close.on_select = [&nav](Button&){
nav.pop();
};
@ -275,10 +239,6 @@ ADSBRxDetailsView::ADSBRxDetailsView(
) : entry_copy(entry),
on_close_(on_close)
{
char file_buffer[32] { 0 };
bool found = false;
size_t number_of_airlines = 0;
std::string airline_code;
add_children({
&labels,
@ -300,46 +260,19 @@ ADSBRxDetailsView::ADSBRxDetailsView(
// The following won't (shouldn't !) change for a given airborne aircraft
// Try getting the airline's name from airlines.db
auto result = db_file.open("ADSB/airlines.db");
if (!result.is_valid()) {
// Search for 3-letter code
number_of_airlines = (db_file.size() / 68); // determine number of airlines in file
airline_code = entry_copy.callsign.substr(0, 3);
// binary search
int first = 0, // First search element
last = number_of_airlines - 1, // Last search element
middle, // Mid point of search
position = -1; // Position of search value
while (!found && first <= last) {
middle = (first + last) / 2; // Calculate mid point
db_file.seek(middle * 4);
db_file.read(file_buffer, 3);
if (file_buffer == airline_code) { // If value is found at mid
found = true;
position = middle;
}
else if (file_buffer > airline_code) // If value is in lower half
last = middle - 1;
else
first = middle + 1; // If value is in upper half
}
if (position > -1) {
db_file.seek((number_of_airlines * 4) + (position << 6)); // seek starting after index
db_file.read(file_buffer, 32);
text_airline.set(file_buffer);
db_file.read(file_buffer, 32);
text_country.set(file_buffer);
} else {
text_airline.set("Unknown");
text_country.set("Unknown");
}
} else {
return_code = db.retrieve_airline_record(&airline_record, airline_code);
switch(return_code) {
case DATABASE_RECORD_FOUND:
text_airline.set(airline_record.airline);
text_country.set(airline_record.country);
break;
case DATABASE_NOT_FOUND:
text_airline.set("No airlines.db file");
text_country.set("No airlines.db file");
break;
}
text_callsign.set(entry_copy.callsign);
text_icao_address.set(to_string_hex(entry_copy.ICAO_address, 6));

View File

@ -27,6 +27,7 @@
#include "ui_font_fixed_8x16.hpp"
#include "file.hpp"
#include "database.hpp"
#include "recent_entries.hpp"
#include "log_file.hpp"
#include "adsb.hpp"
@ -177,11 +178,15 @@ public:
AircraftRecentEntry get_current_entry() { return entry_copy; }
std::database::AircraftDBRecord aircraft_record = {};
private:
AircraftRecentEntry entry_copy { 0 };
std::function<void(void)> on_close_ { };
bool send_updates { false };
File db_file { };
std::database db;
std::string icao_code = "";
int return_code = 0;
Labels labels {
{ { 0 * 8, 1 * 16 }, "ICAO:", Color::light_grey() },
@ -265,13 +270,18 @@ public:
AircraftRecentEntry get_current_entry() { return entry_copy; }
std::database::AirlinesDBRecord airline_record = {};
private:
AircraftRecentEntry entry_copy { 0 };
std::function<void(void)> on_close_ { };
GeoMapView* geomap_view { nullptr };
ADSBRxAircraftDetailsView* aircraft_details_view { nullptr };
bool send_updates { false };
File db_file { };
std::database db;
std::string airline_code = "";
int return_code = 0;
Labels labels {
{ { 0 * 8, 1 * 16 }, "ICAO:", Color::light_grey() },

View File

@ -108,12 +108,12 @@ APRSRxView::APRSRxView(NavigationView& nav, Rect parent_rect) : View(parent_rect
options_region.on_change = [this](size_t, int32_t i) {
if (i == 0){
field_frequency.set_value(144390000);
}
if(i == 1){
} else if(i == 1){
field_frequency.set_value(144800000);
}
if(i == 2){
} else if(i == 2){
field_frequency.set_value(145175000);
} else if(i == 3){
field_frequency.set_value(144575000);
}
};

View File

@ -217,7 +217,8 @@ private:
{
{ "NA ", 0 },
{ "EUR", 1 },
{ "AUS", 2 }
{ "AUS", 2 },
{ "NZ ", 3 }
}
};

View File

@ -0,0 +1,97 @@
/*
* Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc.
* Copyright (C) 2016 Furrtek
* Copyright (C) 2022 Arjan Onwezen
*
* This file is part of PortaPack.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street,
* Boston, MA 02110-1301, USA.
*/
#include "database.hpp"
#include "file.hpp"
#include <cstring>
namespace std {
int database::retrieve_airline_record(AirlinesDBRecord* record, std::string search_term){
file_path = "ADSB/airlines.db";
index_item_length = 4;
record_length = 64;
result = std::database::retrieve_record(file_path, index_item_length, record_length, record, search_term);
return(result);
}
int database::retrieve_aircraft_record(AircraftDBRecord* record, std::string search_term){
file_path = "ADSB/icao24.db";
index_item_length = 7;
record_length = 146;
result = std::database::retrieve_record(file_path, index_item_length, record_length, record, search_term);
return(result);
}
int database::retrieve_record(std::string file_path, int index_item_length, int record_length, void* record, std::string search_term)
{
auto result = db_file.open(file_path);
if (!result.is_valid()) {
number_of_records = (db_file.size() / (index_item_length + record_length)); // determine number of records in file
// binary search tree
int first = 0, // First search element
last = number_of_records - 1, // Last search element
middle, // Mid point of search
position = -1; // Position of search value
while (!found && first <= last) {
middle = (first + last) / 2; // Calculate mid point
db_file.seek(middle * index_item_length);
db_file.read(file_buffer, search_term.length());
if (file_buffer == search_term) { // If value is found at mid
found = true;
position = middle;
}
else if (file_buffer > search_term) // If value is in lower half
last = middle - 1;
else
first = middle + 1; // If value is in upper half
}
if(found == true) {
db_file.seek((number_of_records * index_item_length) + (position * record_length)); // seek starting after index
db_file.read(record, record_length);
return(DATABASE_RECORD_FOUND);
}
else {
return(DATABASE_RECORD_NOT_FOUND);
}
}
else return(DATABASE_NOT_FOUND);
}
} /* namespace std */

View File

@ -0,0 +1,88 @@
/*
* Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc.
* Copyright (C) 2016 Furrtek
* Copyright (C) 2022 Arjan Onwezen
*
* This file is part of PortaPack.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street,
* Boston, MA 02110-1301, USA.
*/
#ifndef __DATABASE_H__
#define __DATABASE_H__
#include <cstddef>
#include <cstdint>
#include <string>
#include "file.hpp"
namespace std {
class database {
public:
#define DATABASE_RECORD_FOUND 0 // record found in database
#define DATABASE_NOT_FOUND -1 // database not found / could not be opened
#define DATABASE_RECORD_NOT_FOUND -2 // record could not be found in database
struct AirlinesDBRecord {
char airline[32]; // airline name
char country[32]; // country name
};
int retrieve_airline_record(AirlinesDBRecord* record, std::string search_term);
struct AircraftDBRecord {
char aircraft_registration[9]; // aircraft registration
char aircraft_manufacturer[33]; // aircraft manufacturer
char aircraft_model[33]; // aircraft model
char icao_type[5]; // ICAO type descripton or when unavailable ICAO type designator
char aircraft_owner[33]; // aircraft owner
char aircraft_operator[33]; // aircraft operator
};
int retrieve_aircraft_record(AircraftDBRecord* record, std::string search_term);
private:
string file_path = ""; // path inclusing filename
int index_item_length = 0; // length of index item
int record_length = 0; // length of record
File db_file { };
int number_of_records = 0;
int position = 0;
char file_buffer[32] { 0 };
bool found = false;
int result = 0;
int retrieve_record(std::string file_path, int index_item_length, int record_length, void* record, std::string search_term);
};
} // namespace std
#endif/*__DATABASE_H__*/

View File

@ -81,39 +81,34 @@ public:
SamplerateConfig = 24,
BTLERxConfigure = 25,
NRFRxConfigure = 26,
TXProgress = 30,
Retune = 31,
TonesConfigure = 32,
AFSKTxConfigure = 33,
PitchRSSIConfigure = 34,
OOKConfigure = 35,
RDSConfigure = 36,
AudioTXConfig = 37,
POCSAGConfigure = 38,
DTMFTXConfig = 39,
ADSBConfigure = 40,
JammerConfigure = 41,
WidebandSpectrumConfig = 42,
FSKConfigure = 43,
SSTVConfigure = 44,
SigGenConfig = 43,
SigGenTone = 44,
POCSAGPacket = 45,
ADSBFrame = 46,
AFSKData = 47,
TestAppPacket = 48,
RequestSignal = 49,
FIFOData = 50,
AudioLevelReport = 51,
CodedSquelch = 52,
AudioSpectrum = 53,
APRSPacket = 54,
APRSRxConfigure = 55,
TXProgress = 27,
Retune = 28,
TonesConfigure = 29,
AFSKTxConfigure = 30,
PitchRSSIConfigure = 31,
OOKConfigure = 32,
RDSConfigure = 33,
AudioTXConfig = 34,
POCSAGConfigure = 35,
DTMFTXConfig = 36,
ADSBConfigure = 37,
JammerConfigure = 38,
WidebandSpectrumConfig = 39,
FSKConfigure = 40,
SSTVConfigure = 41,
SigGenConfig = 42,
SigGenTone = 43,
POCSAGPacket = 44,
ADSBFrame = 45,
AFSKData = 46,
TestAppPacket = 47,
RequestSignal = 48,
FIFOData = 49,
AudioLevelReport = 50,
CodedSquelch = 51,
AudioSpectrum = 52,
APRSPacket = 53,
APRSRxConfigure = 54,
MAX
};

View File

@ -436,7 +436,7 @@ ASF,Austrian Air Force,AUSTRIAN AIRFORCE,Austria
ASG,African Star Airways (PTY) Ltd.,AFRICAN STAR,South Africa
ASH,Mesa Airlines,AIR SHUTTLE,United States
ASI,Aerosun International Inc.,AEROSUN,United States
ASJ,Air Satellite,,Canada
ASJ,AstonJet,,France
ASK,Aerosky,MULTISKY,Spain
ASL,Air Serbia,AIR SERBIA,Serbia
ASM,Awesome Flight Services (PTY) Ltd.,AWESOME,South Africa
@ -508,6 +508,7 @@ AVG,Aviation Legacy,AVILEF,Gambia
AVH,AV8 Helicopters,KENT HELI,United Kingdom
AVJ,Avia Traffic Company,ATOMIC,Kyrgyzstan
AVK,AV8 Helicopters,AVIATE-COPTER,South Africa
AVL,Aviation Adventures,SKY VENTURES,United States
AVM,Aviación Ejecutiva Mexicana S.A.,AVEMEX,Mexico
AVN,Air Vanuatu,AIR VAN,Vanuatu
AVO,Aviation at Work,AVIATION WORK,South Africa
@ -1293,6 +1294,7 @@ CRX,Cross Aviation,CROSSAIR,United Kingdom
CRY,Primavia Limited,CARRIERS,United Kingdom
CRZ,Cruzeiro do Sul Servicos Aereos,,Brazil
CSA,Czech Airlines,CSA,Czech Republic
CSB,21 Air,CARGO SOUTH,United States
CSC,Sichuan Airlines,SI CHUAN,China
CSD,Courier Services,DELIVERY,United States
CSE,CSE Aviation,OXFORD,United Kingdom
@ -1685,6 +1687,7 @@ EFS,EFAOS- Agencia De Viagens e Turismo,EFAOS,Angola
EFT,Embassy Freight Company,EMBASSY FREIGHT,United States
EFX,Easy Fly Express,EASY EXPRESS,BD
EFY,EasyFly,,Colombia
EGC,First Wing Aircraft Charter and Maintenance,EAGLE CREEK,United States
EGF,American Eagle Airlines,EAGLE FLIGHT,United States
EGH,BBN-Airways,,United Kingdom
EGJ,Eagle Jet Charter,EAGLE JET,United States
@ -1862,6 +1865,7 @@ EVN,Euraviation,EURAVIATION,Italy
EVR,Aeronautical Academy of Europe,DIANA,Portugal
EVT,Everett Limited,,Tanzania
EVX,ATR,GREEN SPIRIT,France
EVY,Royal Australian Air Force,,Australia
EWA,East-West Airlines,,Australia
EWE,Eurowings Europe,,Austria
EWG,Eurowings,EUROWINGS,Germany
@ -2009,6 +2013,7 @@ FGY,Froggy Corporate Aviation,,Australia
FHE,Hello,FLYHELLO,Switzerland
FHI,FlyHigh Airlines Ireland (FH),,Ireland
FHL,Fast Helicopters,FINDON,United Kingdom
FHM,Freebird Airlines Europe,EUROBIRD,Malta
FHS,Forth and Clyde Helicopter Services,HELISCOT,United Kingdom
FHY,Freebird Airlines,FREEBIRD AIR,Turkey
FI5,Fly One,,Moldova
@ -2029,6 +2034,7 @@ FJI,Fiji Airways,PACIFIC,Fiji
FJK,Fly Jet Kz,,Kazakhstan
FJM,Fly Jamaica Airways,GREENHEART,Jamaica
FJO,Flexjet Operations Malta Limited,FLEX MALTA,Malta
FRJ,Fly Jordan,SOLITAIRE AIR,Jordan
FJS,Florida Jet Service,FLORIDAJET,United States
FKA,Flying kangaroo Airline,,Australia
FKI,FLM Aviation Mohrdieck,KIEL AIR,Germany
@ -2139,6 +2145,7 @@ FTH,Mountain Aviation,FOOTHILL,United States
FTI,FTI Fluggesellschaft,,Germany
FTL,Flightline,FLIGHT-AVIA,Spain
FTM,Flyteam Aviation,FLYTEAM,United Kingdom
FTN,Victory Air,FRONTRUNNER,United States
FTP,Keystone Aerial Surveys,FOOTPRINT,United States
FTR,Finist'air,FINISTAIR,France
FTS,First Sabre,FIRST SABRE,Mexico
@ -2230,6 +2237,7 @@ GCC,GECAS,GECAS,Ireland
GCF,Aeronor,AEROCARTO,Spain
GCH,Gama Aviation Switzerland,GAMA SWISS,Switzerland
GCK,Aerogem Cargo,,Ghana
GCL,CargoLogic Germany,SAXONIAN,Germany
GCM,Comair Flight Services,GLOBECOM,South Africa
GCN,Gulf Central Airlines,GULF CENTRAL,United States
GCO,Gemini Air Cargo,GEMINI,United States
@ -2321,6 +2329,7 @@ GJM,Airhub Airlines,AIRHUB,Malta
GJS,GoJet Airlines,LINDBERGH,United States
GJT,Gestión Aérea Ejecutiva,BANJET,Spain
GKA,US Army Parachute Team,GOLDEN KNIGHTS,United States
GKY,Gama Aviation,GAMA CAYMAN,Cayman Islands
GLA,Great Lakes Airlines,LAKES AIR,United States
GLB,Global Airways (GLB),GLO-AIR,United States
GLC,Global Aircargo,,Bahrain
@ -2348,6 +2357,7 @@ GMI,Germania,GERMANIA,Germany
GMJ,Gamisa Aviación,GAMISA,Spain
GML,G & L Aviation,GEEANDEL,South Africa
GMM,Aerotaxis Guamuchil,AEROGUAMUCHIL,Mexico
GMN,Garmin,GARMIN,United States
GMQ,Germania Express,CORGI,Germany
GMR,Golden Myanmar Airlines,GOLDEN MYANMAR,Myanmar
GMS,Aeroservicios Gama,SERVICIOS GAMA,Mexico
@ -2383,11 +2393,12 @@ GPA,Golden Pacific Airlines,GOLDEN PAC,United States
GPC,Gulf Pearl Air Lines,AIR GULFPEARL,Libya
GPD,Tradewind Aviation,GOODSPEED,United States
GPE,GP Express Airlines,REGIONAL EXPRESS,United States
GPL,DLR,,Germany
GPL,DLR,GERMAN POLAR,Germany
GPM,Grup Air-Med,GRUPOMED,Spain
GPR,GPM Aeroservicio,GPM AEROSERVICIO,Mexico
GPX,GP Aviation,,Bulgaria
GRA,Guardian Air Asset Management,FLEX,South Africa
GRB,Phoenix Air Group,GREY BIRD,United States
GRD,National Grid plc,GRID,United Kingdom
GRE,Air Scotland,GREECE AIRWAYS,Greece
GRG,Air Georgia,AIR GEORGIA,Georgia
@ -2455,6 +2466,7 @@ GXY,Galaxy Airlines,GALAX,Japan
GYP,Eagle Aviation,GYPSY,United Kingdom
GZA,Excellent Air,EXCELLENT AIR,Germany
GZD,Grizodubova Air Company,GRIZODUBOVA AIR,Russia
GZO,Aeromanagement Group,GEZIRA,United States
GZP,Gazpromavia,GAZPROMAVIA,Russia
GZQ,Zagros Air,ZAGROS,Iran
HA1,Hankook Air US,,United States
@ -2515,6 +2527,7 @@ HEJ,Hellas Jet,,Greece
HEL,Helicol,HELICOL,Colombia
HEM,CHC Helicopter,HEMS,Australia
HEN,Helicópteros Y Vehículos Nacionales Aéreos,HELINAC,Mexico
HEP,Oslo Politidistrikt Helikoptertjenesten,HELIPOLICE,Norway
HER,Hera Flight,,United States
HES,Holiday Europe,HOLIDAY EUROPE,Bulgaria
HET,TAF Helicopters,HELITAF,Spain
@ -2588,6 +2601,7 @@ HLT,Helitafe,HELITAFE,Mexico
HLU,Heli Union Heli Prestations,HELI UNION,France
HLW,Heliworks,HELIWORKS,Chile
HLX,Hapag-Lloyd Express (TUIfly),YELLOW CAB,Germany
HLY,Heli Air,WHISPER,United Kingdom
HMA,Air Tahoma,TAHOMA,United States
HMB,CHC Global Operations Canada,HUMMINGBIRD,Canada
HMC,Heliamerica De Mexico,HELIAMERICA,Mexico
@ -2628,6 +2642,7 @@ HQO,Avinor,,Norway
HRA,Heli-Iberica,ERICA,Spain
HRB,Haiti International Airline,HAITI AIRLINE,Haiti
HRC,Harco Aviation,HARCO,United States
HRE,FFH Sudwestdeutsche Verkehrsfliegerschule,HART AIR,Germany
HRH,Royal Tongan Airlines,TONGA ROYAL,Tonga
HRI,Skyraidybos Mokymo Centras,HELIRIM,Lithuania
HRM,Hermes Airlines,,Greece
@ -2747,6 +2762,7 @@ ICT,Intercontinental de Aviación,CONTAVIA,Colombia
ICU,Reignwood Asia Aviation Co Ltd,ASIA MEDICAL,China
ICV,Cargolux Italia,CARGO MED,Italy
ICX,International Charter Xpress,,United States
ICY,Intercity Air,INTERCITY,Malaysia
IDA,Indonesia Air Transport,INTRA,Indonesia
IDE,Independence Air,,United States
IDG,IDG Technology Air,INDIGO,Czech Republic
@ -2819,6 +2835,7 @@ INC,Insel Air International,INSELAIR,Netherlands Antilles
IND,Iona National Airways,IONA,Ireland
INE,International Europe,,Spain
ING,Aeroingenieria,,Chile
INI,Initium Aviation,INITIUM,Spain
INK,Sincom-Avia,SINCOM AVIA,Ukraine
INL,Intal Avia,INTAL AVIA,Kyrgyzstan
INO,Aeroservicios Intergrados de Norte,INTENOR,Mexico
@ -3055,6 +3072,7 @@ JSE,Jets Y Servicios Ejecutivos,,Mexico
JSH,Jetstream Air,,Hungary
JSI,Jet Air Group,,Russia
JSJ,JS Air,,Pakistan
JSL,SelectJet,SELECTJET,United States
JSM,Jet Stream,,Moldova
JSN,Suncor Energy Inc,JETSUN,Canada
JSP,Palmer Aviation,PALMER,United Kingdom
@ -3519,6 +3537,7 @@ LRW,Al Rida Airways,AL RIDA,Mauritania
LSA,LANSA,INTERNACIONAL,Dominican Republic
LSC,Los Cedros Aviación,CEDROS,Chile
LSE,Línea De Aeroservicios,,Chile
LSI,Aliscargo Airlines,ALIS,Italy
LSK,Aurela,AURELA,Lithuania
LSM,Aerobusinessservice,,Russia
LSP,Spectrum Aviation Incorporated,AIR TONY,United Kingdom
@ -3775,10 +3794,12 @@ MMD,Air Alsie,MERMAID,Denmark
MMF,Netherlands Air Force,,Netherlands
MMG,Aereo Ruta Maya,RUTA MAYA,Guatemala
MMH,McMahon Helicopter,NIGHT RIDER,United States
MMI,Marina Militare Italiana,ITALIAN NAVY,Italy
MMJ,Macau Jet International,MACAUJET,China
MML,Hunnu Air,TRANS MONGOLIA,Mongolia
MMM,Aviation Company Meridian,AVIAMERIDIAN,Russia
MMN,Pro Airways,,United States
MMO,Malta MedAir,MALIT,Malta
MMP,AMP Incorporated,AMP-INC,United States
MMR,Musrata Air Transport,MUSRATA AIR,Libya
MMS,SAAD (A320) Limited,MUSAAD AIR,Cayman Islands
@ -3933,6 +3954,7 @@ MXS,Millon Express,MILLON EXPRESS,United States
MXT,México Transportes Aéreos,TRANSMEX,Mexico
MXU,Maximus Air Cargo,CARGO MAX,United Arab Emirates
MXX,Merchant Express Aviation,MERCHANT,Nigeria
MXY,Breeze Airways,MOXY,United States
MYA,Myflug,MYFLUG,Iceland
MYD,Maya Island Air,MYLAND,Belize
MYI,Mayair,MAYAIR,Mexico
@ -3961,7 +3983,7 @@ NAF,Royal Netherlands Air Force,NETHERLANDS AIR FORCE,Netherlands
NAH,Nahanni Air Services Ltd,NAHANNI,Canada
NAI,North Adria Aviation,NORTH-ADRIA,Croatia
NAJ,North American Jet Charter Group,JET GROUP,United States
NAK,École Nationale de l'Aviation Civile,ENAC SCHOOL,France
NAK,ENAC,ENAC SCHOOL,France
NAL,Northway Aviation Ltd,NORTHWAY,Canada
NAM,Nortland Air Manitoba,MANITOBA,Canada
NAN,Norwegian Air Norway,NORSHIP,Norway
@ -4134,6 +4156,7 @@ NSA,Nile Safaris Aviation,NILE SAFARIS,Sudan
NSC,Societe De Transport Aerien De Mauritanie,TRANS-SOCIETE,Mauritania
NSE,SATENA,SATENA,Colombia
NSF,Northamptonshire School of Flying,NORTON,United Kingdom
NSH,Sterling Aviation,NORTH-SHORE,United States
NSJ,Nanshan Jet,NANSHAN,China
NSK,Air Intersalonika,INTERSALONIKA,Greece
NSL,Neric,NERICAIR,United Kingdom
@ -4150,6 +4173,7 @@ NTB,Servicios Aéreos Del Norte,SERVINORTE,Mexico
NTC,Gibson Aviation,NIGHT CHASE,United States
NTD,Aero Norte,,Mexico
NTE,Interaire,INTERMEX,Mexico
NTF,OK Business Aircraft,NETFLIGHT,Czech Republic
NTG,Servicios Integrales De Aviación,INTEGRALES,Mexico
NTH,Hokkaido Air System,NORTH AIR,Japan
NTJ,NextJet,NEXTJET,Sweden
@ -4183,6 +4207,7 @@ NVR,Novair,NAVIGATOR,Sweden
NVS,Nouvelle Air Affaires Gabon,NOUVELLE AFFAIRES,GA
NVY,Royal Navy,NAVY,United Kingdom
NWA,Delta Airlines,NORTHWEST,United States
NWC,Aircompany North-West LLC,WEST WAY,Russia
NWD,New World Jet Corporation,NEW WORLD,United States
NWE,Northwest Aero Associates,,United States
NWF,Northwest Flyers,SECOND CITY,United States
@ -4273,6 +4298,7 @@ OLV,Aerolíneas Olve,OLVE,Mexico
OLX,Olimex Aerotaxi,OLIMEX,Czech Republic
OLY,Olympic Aviation,OLAVIA,Greece
OMA,Oman Air,OMAN AIR,Oman
OMD,Nomadic Aviation,NOMADIC,United States
OME,Homer Air,,Germany
OMF,Omniflys,OMNIFLYS,Mexico
OMG,Aeromega,OMEGA,United Kingdom
@ -4855,6 +4881,7 @@ RJA,Royal Jordanian,JORDANIAN,Jordan
RJC,Richmor Aviation,COLUMBIA JET,United States
RJD,Rotana Jet,,United Arab Emirates
RJM,Millen Corporation,MILLEN,United Kingdom
RJR,Air CM Global,MELITA,Malta
RJS,Aeroservicios Jet,ASERJET,Mexico
RJT,RA Jet Aeroservicios,RA JET,Mexico
RJZ,Royal Jordanian Air Force,JORDAN AIR FORCE,Jordan
@ -5046,7 +5073,6 @@ RYR,Ryanair,RYANAIR,Ireland
RYS,Buzz (Ryanair),MAGIC SUN,Poland
RYT,Raya Jet,,Jordan
RYZ,Ryazan State Air Enterprise,RYAZAN AIR,Russia
RZ,Superna Airlines,YANGTZE RIVER,China
RZA,Jet Fighter Flights,,Australia
RZL,Aero Zambia,AERO ZAMBIA,Zambia
RZN,Aero Zano,ZANO,Mexico
@ -5131,6 +5157,7 @@ SDC,Sunrise Airlines,SUNDANCE,United States
SDD,Skymaster Air Taxi,SKY DANCE,United States
SDE,Air Partners Corp.,STAMPEDE,Canada
SDF,Sundorph Aeronautical Corporation,SUNDORPH,United States
SDG,Star Air,HI STAR,India
SDH,Servicio De Helicopteros,ARCOS,Spain
SDI,San Dima Air,,United States
SDJ,Club 328,SPACEJET,United Kingdom
@ -5568,6 +5595,7 @@ SXA,Southern Cross Aviation,FERRY,United States
SXC,Sky Exec Aviation Services,SKY EXEC,Nigeria
SXD,Sunexpress Deutschland,SUNRISE,Germany
SXE,Southeast Express Airlines,DOGWOOD EXPRESS,United States
SXI,Southern Cross International,SOUTHERN CROSS,Netherlands
SXL,Skyline Flight,SKYLINE,United States
SXM,Servicios Aéreos Especializados Mexicanos,SERVIMEX,Mexico
SXN,SaxonAir,SAXONAIR,United Kingdom
@ -5709,6 +5737,7 @@ TFK,Transafrik International,,São Tomé and Príncipe
TFL,TUI Airlines Netherlands,ORANGE,Netherlands
TFN,Norwegian Aviation College,SPIRIT,Norway
TFO,Transportes Aéreos del Pacífico,TRANSPORTES PACIFICO,Mexico
TFR,Air Freight NZ Cargo,TOLL FREIGHT,New Zealand
TFT,Thai Flying Service,THAI FLYING,Thailand
TFU,213th Flight Unit,THJY,Russia
TFX,Toll Priority,TOLL EXPRESS,AU
@ -5763,6 +5792,7 @@ TIS,Tesis,TESIS,Russia
TIV,Thrive Aviation,THRIVE,United States
TIW,Transcarga Intl Airways,TIACA,Venezuela
TJA,T.J. Air,,United States
TJD,Aliserio,ALISERIO,Italy
TJJ,Top Jets,THUNDERBOLT,Bulgaria
TJK,Tajikair,TAJIKAIR,Tajikistan
TJN,Tien-Shan,NERON,Kazakhstan
@ -5969,6 +5999,7 @@ TVI,Tiramavia,TIRAMAVIA,Moldova
TVJ,Thai Vietjet Air,THAIVIET JET,Thailand
TVL,Travel Service,TRAVEL SERVICE,Hungary
TVO,Transavio,TRANS-BALLERIO,Italy
TVP,Smartwings Poland,JET TRAVEL,Poland
TVR,Tavrey Airlines,TAVREY,Ukraine
TVS,Smartwings,SKYTRAVEL,Czech Republic
TVV,Travira Air,PARAMITA,Indonesia
@ -6036,6 +6067,7 @@ UAL,United Airlines,UNITED,United States
UAR,Aerostar Airlines,AEROSTAR,Ukraine
UAS,University Air Squadron,,United Kingdom
UAT,Ukraine Atlantic,,Ukraine
UAW,UAS/AEF St Athan,,United Kingdom
UAY,University of Birmingham Air Squadron (RAF),,United Kingdom
UBA,Myanma Airways,UNIONAIR,Myanmar
UBD,United Airways,UNITED BANGLADESH,Bangladesh
@ -6331,6 +6363,7 @@ VSR,Aviostart AS,AVIOSTART,Bulgaria
VSS,Virign Islands Seaplane Shuttle,WATERBIRD,United States
VSV,Scat Air,VLASTA,Kazakhstan
VTA,Air Tahiti,AIR TAHITI,French Polynesia
VTB,Jet Strean Charter,SUXAIR,Hungary
VTC,Vuelos Especializados Tollocan,VUELOS TOLLOCAN,Mexico
VTE,Contour Airlines,VOLUNTEER,United States
VTG,Aviação Transportes Aéreos e Cargas,ATACARGO,Angola
@ -6389,6 +6422,7 @@ WAU,Wizz Air Ukraine,,Ukraine
WAV,Warbelow's Air Ventures,WARBELOW,United States
WAW,Wings Airways,WING SHUTTLE,United States
WAY,Airways,GARONNE,France
WAZ,Wizz Air,WIZZ SKY,United Arab Emirates
WBA,Finncomm Airlines,WESTBIRD,Finland
WBR,Multi-Aero,WEBER,United States
WCA,West Coast Airways,WEST-LEONE,Sierra Leone
@ -6401,6 +6435,7 @@ WCR,West Caribbean Costa Rica,WEST CARIBBEAN,Costa Rica
WCW,West Caribbean Airways,WEST,Colombia
WCY,Viking Express,TITAN AIR,United States
WDA,Wimbi Dira Airways,WIMBI DIRA,Democratic Republic of Congo
WDE,Pallas Aviation,SANDSTONE,United States
WDG,Ministry of Agriculture Fisheries and Food,WATCHDOG,United Kingdom
WDK,Oxford Air Services,WOODSTOCK,United Kingdom
WDL,WDL Aviation,WDL,Germany
@ -6463,6 +6498,7 @@ WLV,Aviation North,WOLVERINE,United States
WLX,West Air Luxembourg,WEST LUX,Luxembourg
WMA,Watermakers Air,WATERMAKERS,United States
WML,Chantilly Air,MARLIN,United States
WMN,Trident Aircraft,WATERMAN,United States
WNA,Winair,WINAIR,United States
WNR,Wondair on Demand Aviation,WONDAIR,Spain
WOA,World Airways,WORLD,United States
@ -6537,6 +6573,7 @@ XBM,CBM America,,United States
XBO,Baseops International,,United States
XCA,Colt Transportes Aereos,COLT,Brazil
XCC,Ecoturistica de Xcalak,XCALAK,Mexico
XCH,Jet Exchange,EXCHANGE,United Kingdom
XCL,Contel ASC,,United States
XCO,Compuflight Operations Service,,United States
XCS,Compuserve Incorporated,,United States
@ -6557,6 +6594,7 @@ XFS,American Flight Service Systems,,United States
XFX,Airways Corporation of New Zealand,AIRCORP,New Zealand
XGA,General Aviation Terminal,,Canada
XGG,IMP Group Aviation Services,,Canada
XGN,NexGen Flight Solutions,NEXGEN,United States
XGO,AirGO Flugservice GmbH & Co KG,PASTIS,Germany
XGS,Global System,,United States
XGW,Global Weather Dynamics,,United States

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.