Skip to content

Python/JavaScript ACARS decoding library supporting ARINC 620 standard. Provides message classification & validation. For ACARS network applications decoding, use with compatible backend/viewer.

License

Notifications You must be signed in to change notification settings

ibosoftnet/acars-decoding-library

Repository files navigation

ACARS Decoding Library

28.01.2026


Giriş:

ACARS ağı iletilerinin (ARINC 618/620 uygulamaları) çözümlemesi için JavaScript ve Python tabanlı ortak bir kütüphane. JSON spec dosyası üzerinden çalışır ve her iki dil için de aynı çözümleme mantığını kullanır.

Ibosoft ATC sistemi içerisinde bu kütüphane kullanılmaktadır. https://atc.ibosoft.net.tr

Özellikler:

  • JavaScript ve Python desteği
  • Ortak spec dosyası (ibosoft-acars-spec.json)
  • ARINC 618/620 ileti formatlarını destekler
  • Uplink ve downlink iletileri
  • Yapılandırılabilir (config.json)

Desteklenen ACARS İleti Label'lar:

Henüz tüm labeller desteklenmemektedir. Diğer labeller ileride eklenecektir. Şu anlık desteklenen labellar şunlardır:

  • Uplink: 51, 52, :;, RA, SQ
  • Downlink: 00, 51, 52, 57, 5V, HX, Q0, Q1, Q2, Q3, Q7, QA, QB, QC, QD, QE, QF, QG, QH, QK, QL, QM, QN, QP, QQ, QR, QS, QT, RB, SA, _DEL

NOT: Yazılımda kısıtlamalardan dolayı _DEL labeli yerine _d kullanılmıştır. (DEL ASCII DEL karakteridir, 0x7F).

Label kullanımları, ileti formatları ve detaylı API dokümantasyonu için API Manual.md dosyasına bakınız.

Data Link Yazılımlarımız:

  • ACARS Viewer
  • ACARS Backend
  • ACARS Decoding Library
  • ACARS Tester

For more information about aviation communication and data link systems: https://egitim.ibosoft.net.tr/
For abbreviations used in the project, see: Ibosoft Abbreviations Database

Lisans:

Bu proje Elastic License 2.0 ile lisanslanmıştır.

Kaynak kodu herkese açıktır. Kişisel ve ticari projelerde kullanım serbesttir. Kod üzerinde değişiklik yapılabilir; ancak projenin kendisi veya değiştirilmiş hâlleri, açık izin alınmadan yeniden paylaşılamaz, yayımlanamaz veya bir servis olarak sunulamaz.


Introduction:

A common library for JavaScript and Python for decoding ACARS network messages (ARINC 618/620 applications). Works through a JSON spec file and uses the same decoding logic for both languages.

This library is used within the Ibosoft ATC system. https://atc.ibosoft.net.tr

Features:

  • JavaScript and Python support
  • Common spec file (ibosoft-acars-spec.json)
  • Supports ARINC 618/620 message formats
  • Uplink and downlink messages
  • Configurable (config.json)

Supported ACARS Message Labels:

Not all labels are supported yet. Other labels will be added in the future. Currently supported labels are:

  • Uplink: 51, 52, :;, RA, SQ
  • Downlink: 00, 51, 52, 57, 5V, HX, Q0, Q1, Q2, Q3, Q7, QA, QB, QC, QD, QE, QF, QG, QH, QK, QL, QM, QN, QP, QQ, QR, QS, QT, RB, SA, _DEL

NOTE: Due to software limitations, _d is used instead of the _DEL label. (DEL is the ASCII DEL character, 0x7F).

For label usage, message formats, and detailed API documentation, see the API Manual.md file.

Our Data Link Software Series:

  • ACARS Viewer
  • ACARS Backend
  • ACARS Decoding Library
  • ACARS Tester

For more information about aviation communication and data link systems: https://egitim.ibosoft.net.tr/
For abbreviations used in the project, see: Ibosoft Abbreviations Database

License:

This project is licensed under Elastic License 2.0.

The source code is publicly available. Use in personal and commercial projects is free. The code can be modified; however, the project itself or its modified versions cannot be redistributed, published, or offered as a service without explicit permission.


TÜRKÇE KISIM

Kurulum ve Kullanım:

Gereklilikler:

  • Python: Python 3.x
  • JavaScript: Modern tarayıcı veya Node.js

Kurulum:

Kütüphane dosyalarını projenize kopyalayın:

  • Python: ibosoft-acars-library.py
  • JavaScript: ibosoft-acars-library.js
  • Spec dosyası: ibosoft-acars-spec.json (zorunlu)
  • Config dosyası: config.json (isteğe bağlı)
  • Biçim listesi: label-list.csv (zorunlu)
  • TEI kodları: tei-codes.json (Şu anlık kullanımı yok.)

Kullanım:

Python:

from ibosoft_acars_library import iboDecodeAcarsMsg

result = iboDecodeAcarsMsg("dn", "Q2", "F45ABC123IBOIBO8U,0214,LTAI,0226,LTFM,0239")
print(result)

JavaScript:

const result = iboDecodeAcarsMsg("dn", "Q2", "F45ABC123IBOIBO8U,0214,LTAI,0226,LTFM,0239");
console.log(result);

Parametreler:

  • Direction: İleti yönü - "up" (uplink) veya "dn" (downlink)
  • Label: ACARS label (2 karakter, ASCII)
  • Message: İleti içeriği (ASCII)

Dönüş değerleri:

  • invalid-label: Label desteklenmiyor veya ASCII değil
  • invalid-data: Veri geçersiz (uzunluk aralığı dışı, ASCII olmayan, spec eksik, API Manual.md dosyasına bakınız.)
  • Çözümlenmiş çıktı: İleti formatı ve decode edilmiş satırlar

label-list.csv:
Bu dosya, ARINC 620-7 standartında belirtilen label'ları içerir. Bu listedeki Label, biçim ismi, ileti yönü, çözülebilirlik bilgisi kütüphane tarafından kullanılır. Bunun haricinde kendi yazılımlarınızda ihtiyaç duyabileceğiniz ek bilgiler de yer almaktadır. Bu CSV dosyasını, kendi yazılımlarınızda, kütüphaneden bağımsız olarak iletilerin sınıflandırılması vb. amaçlarla kullanabilirsiniz.

  • CSV dosyasının sütunları şu şekildedir:
direction,label,decodability,mfi,name,description
  • Sütunların açıklamaları:
    • direction: İleti yönü - up (uplink) veya dn (downlink)
    • label: ACARS label (2 karakter veya özel karakterler, ASCII)
    • decodability: Çözülebilirlik durumu - decodable (çözülebilir), non-decodable (çözülemiyor), reserved (ARINC 620'de belirtildiği üzere ayrılmış, işlevsiz Label), not-used (ARINC 620'de belirtildiği üzere kullanılmıyor, işlevsiz Label)
    • mfi: MFI (Message Function Identifier) desteği - true veya false
    • name: İleti format ismi (ARINC 620 ile birebir)
    • description: Label açıklaması (Şu anlık boş bırakılmıştır.)

Örnek Çözümleme:

# Uplink Squitter örneği
result = iboDecodeAcarsMsg("up", "SQ", "02XAAYTLTAI13654N03048EB136975/ARINC")

Çıktı:

Message Format: Uplink Squitter
Decode:
 Version: 2
 Datalink Service Provider: ARINC
 IATA Station ID: AYT
 ICAO Station ID: LTAI
 Station Number ID: 1
 Latitude: 3654N
 Longitude: 03048E
 Alternate Service(s) Name: VDL Mode 2 AOA and ATN
 Alternate Service(s) Freq: 136975 kHz
 Free Text: ARINC

Yapılandırma:

{
  "parseDownlinkSequence": true,
  "parseFlightIdentifier": true
}
  • parseDownlinkSequence: Downlink iletilerinde 4 karakterlik Downlink Sequence Number'ı parse et (varsayılan: true)
    • İlgili Dowlink Biçimi, Downlink Sequence Number içeriyorsa geçerlidir. Kapalıysa çözümlenmez ve iletinin ilk 4 karakteri eksik vaysayılır.
  • parseFlightIdentifier: 6 karakterlik Flight Identifier'ı parse et (varsayılan: true)
    • İlgili Downlink Biçimi, Flight Identifier içeriyorsa geçerlidir. Kapalıysa çözümlenmez ve iletinin ilk 6 karakteri eksik vaysayılır. Bu ayar kapalı fakat Downlink Sequence Number ayarı etkinse Downlink Sequence Number'dan sonraki 6 karakter eksik vaysayılır.

NOT: ARINC 618/620'de belirtildiği üzere, çoğu Dowlink iletisinin ilk 4 karakteri Downlink Sequence Number, sonraki 6 karakteri Flight Identifier'dir. Bazı çözümleme veya yönlendirme yazılımları (acarsdec, vdlm2dec, acars_router vb.) Downlink Sequence Number ve/veya Flight Identifier'ı iletiden kaldırıp ayrı olarak iletir. Bu durumda bu ayarları kapatmanız gerekebilir.


API Dokümantasyonu:

Detaylı API dokümantasyonu, ileti formatları, alan açıklamaları ve tüm desteklenen label'ların kullanımı için API Manual.md dosyasına bakınız.


Dosya Yapısı:

acars-decoding-library/
├── ibosoft-acars-library.py     # Python kütüphanesi
├── ibosoft-acars-library.js     # JavaScript kütüphanesi
├── ibosoft-acars-spec.json      # İleti formatları spec dosyası (zorunlu)
├── config.json                  # Yapılandırma dosyası (isteğe bağlı)
├── label-list.csv               # Biçim listesi (zorunlu)
├── tei-codes.json               # TEI kod listesi (Şu anlık kullanımı yok.)
├── acars-py-test.py             # Python test dosyası
├── acars-js-test.html           # JavaScript test dosyası
├── API Manual.md                # Detaylı API dokümantasyonu
├── LICENSE                      # Lisans dosyası
└── README.md                    # Bu dosya

ENGLISH VERSION

Installation and Usage:

Requirements:

  • Python: Python 3.x
  • JavaScript: Modern browser or Node.js

Installation:

Copy the library files to your project:

  • Python: ibosoft-acars-library.py
  • JavaScript: ibosoft-acars-library.js
  • Spec file: ibosoft-acars-spec.json (required)
  • Config file: config.json (optional)
  • Format list: label-list.csv (required)
  • TEI codes: tei-codes.json (Currently not used.)

Usage:

Python:

from ibosoft_acars_library import iboDecodeAcarsMsg

result = iboDecodeAcarsMsg("dn", "Q2", "F45ABC123IBOIBO8U,0214,LTAI,0226,LTFM,0239")
print(result)

JavaScript:

const result = iboDecodeAcarsMsg("dn", "Q2", "F45ABC123IBOIBO8U,0214,LTAI,0226,LTFM,0239");
console.log(result);

Example Decoding:

# Uplink Squitter example
result = iboDecodeAcarsMsg("up", "SQ", "02XAAYTLTAI13654N03048EB136975/ARINC")

Output:

Message Format: Uplink Squitter
Decode:
 Version: 2
 Datalink Service Provider: ARINC
 IATA Station ID: AYT
 ICAO Station ID: LTAI
 Station Number ID: 1
 Latitude: 3654N
 Longitude: 03048E
 Alternate Service(s) Name: VDL Mode 2 AOA and ATN
 Alternate Service(s) Freq: 136975 kHz
 Free Text: ARINC

Parameters:

  • Direction: Message direction - "up" (uplink) or "dn" (downlink)
  • Label: ACARS label (2 characters, ASCII)
  • Message: Message content (ASCII)

Return values:

  • invalid-label: Label not supported or not ASCII
  • invalid-data: Data invalid (out of bounds length, non-ASCII, missing spec, see API Manual.md)
  • Decoded output: Message format and decoded lines

label-list.csv:
This file contains the labels specified in the ARINC 620-7 standard. The label, format name, message direction, and decodability information in this list are used by the library. Apart from this, there is also additional information that you may need in your own software. You can use this CSV file in your own software independently from the library for purposes such as message classification.

  • CSV file columns are as follows:
direction,label,decodability,mfi,name,description
  • Column descriptions:
    • direction: Message direction - up (uplink) or dn (downlink)
    • label: ACARS label (2 characters or special characters, ASCII)
    • decodability: Decodability status - decodable (decodable), non-decodable (not decodable), reserved (reserved as specified in ARINC 620, non-functional label), not-used (not used as specified in ARINC 620, non-functional label)
    • mfi: MFI (Message Function Identifier) support - true or false
    • name: Message format name (one-to-one with ARINC 620)
    • description: Label description (Currently left blank.)

Configuration:

{
  "parseDownlinkSequence": true,
  "parseFlightIdentifier": true
}
  • parseDownlinkSequence: Parse 4-character Downlink Sequence Number in downlink messages (default: true)
    • Valid if the related Downlink Format contains Downlink Sequence Number. If disabled, it will not be parsed and the first 4 characters of the message are assumed to be missing.
  • parseFlightIdentifier: Parse 6-character Flight Identifier (default: true)
    • Valid if the related Downlink Format contains Flight Identifier. If disabled, it will not be parsed and the first 6 characters of the message are assumed to be missing. If this setting is disabled but Downlink Sequence Number setting is enabled, the 6 characters after Downlink Sequence Number are assumed to be missing.

NOTE: As specified in ARINC 618/620, the first 4 characters of most Downlink messages are Downlink Sequence Number, and the next 6 characters are Flight Identifier. Some decoding or routing software (acarsdec, vdlm2dec, acars_router, etc.) removes Downlink Sequence Number and/or Flight Identifier from the message and transmits them separately. In this case, you may need to disable these settings.


API Documentation:

For detailed API documentation, message formats, field descriptions, and usage of all supported labels, see the API Manual.md file.


File Structure:

acars-decoding-library/
├── ibosoft-acars-library.py     # Python library
├── ibosoft-acars-library.js     # JavaScript library
├── ibosoft-acars-spec.json      # Message formats spec file (required)
├── config.json                  # Configuration file (optional)
├── label-list.csv               # Format list (required)
├── tei-codes.json               # TEI code list (Currently not used.)
├── acars-py-test.py             # Python test file
├── acars-js-test.html           # JavaScript test file
├── API Manual.md                # Detailed API documentation
├── LICENSE                      # License file
└── README.md                    # This file

About

Python/JavaScript ACARS decoding library supporting ARINC 620 standard. Provides message classification & validation. For ACARS network applications decoding, use with compatible backend/viewer.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published