ASTERIX (ASTERIX)
ASTERIX (англ. сокр. All Purpose Structured Eurocontrol Surveillance Information Exchange, многоцелевой структурированный обмен информацией наблюдения Евроконтроля) — протокол прикладного/представительского уровня, ответственный за определение и сбор данных, разработанный для обеспечения трансляции и обмена данными наблюдения.
Правила изменения категорий
[править | править код]Спецификация ASTERIX разбита на части. В первой части описываются основные принципы, а остальные части относятся к различным областям применения. Каждой области применения должна соответствовать одна и только одна часть спецификации. Часть может иметь разные версии, которые могут сосуществовать одновременно и поддерживаться независимо друг от друга.
Правила позволяют определить 32 области применения. Каждой области должна быть присвоена начальная категория от 0 до 31 включительно.
Чтобы избежать неправильного толкования данных, любой новой версии части должна быть присвоена категория, чей номер отличается от предыдущего. Номер рассчитывается по следующей формуле.
Где:
- — категория для части версии N.
- — категория для версии, следующей за N.
- — операция взятия остатка от деления A на B.
Правила применяются к категориям от 0 до 127 включительно.
Обозначения
[править | править код]В этой статье для обозначения размера данных используются целые числа либо целые числа со знаком +. Например: 1+. Это означает, что размер данных равен или больше целого числа перед знаком +. Размер данных всегда равен целому числу.
Структура данных
[править | править код]Редакция 2.1 и более ранние
[править | править код]В спецификации ASTERIX редакции 2.1 (апрель 2013) и более ранних редакциях структура данных следующая.
Блок данных
[править | править код]Байт | 0 | 1...2 | 3... | |||
Обозначение | CAT | LEN | RECORD 1 | RECORD 2 | ... | RECORD K |
Наименование | Категория данных | Размер блока данных | Запись 1 | Запись 2 | ... | Запись K |
Размер, байт | 1 | 2 | 1+ |
Запись
[править | править код]Байт | 0...m | (m+1)... | |||
Обозначение | FSPEC | DATA FIELD 1 | DATA FIELD 2 | ... | DATA FIELD N |
Наименование | Спецификация полей | Поле данных 1 | Поле данных 2 | ... | Поле данных N |
Размер, байт | 1+ | 0+ | 0+ | ... | 0+ |
Где: N — количество полей.
Спецификация полей (FSPEC)
[править | править код]Байт | 0 | 1 | 2...(L-1) | L | |||||||||||||||||||||
Бит | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16...(M-8) | M-7 | M-6 | M-5 | M-4 | M-3 | M-2 | M-1 | M |
Обозначение | F1 | F2 | F3 | F4 | F5 | F6 | F7 | FX | F8 | F9 | F10 | F11 | F12 | F13 | F14 | FX | F15...F[N-7] | F[N-6] | F[N-5] | F[N-4] | F[N-3] | F[N-2] | F[N-1] | F[N] | FX=0 |
Где:
- L+1 — размер спецификации полей в байтах;
- M+1 — размер спецификации полей в битах;
- N — количество полей;
- F[Y] — индикатор наличия поля Y;
- FX — индикатор расширения полей.
Значение в бите F[Y] определяет присутствует ли поле Y в записи. Если F[Y] равно 0, то поле отсутствует, если F[Y] равно 1, то поле присутствует.
Если FX равен 1, то следующий байт — это продолжение спецификации полей. Если FX равен 0, то это означает, что достигнут конец спецификации полей.
Редакция 2.2 и более поздние
[править | править код]В спецификации ASTERIX редакции 2.2 (октябрь 2014) структура данных была изменена. Стало невозможным объединяться записи в блоке данных. Данные представляются одной записью. Новая структура данных используется только для категорий 015 и 238. Для остальных категорий используется предыдущая структура данных.
Запись
[править | править код]Байт | 0 | 1...2 | 3...m | (m+1)... | |||
Обозначение | CAT | LEN | FSPEC | Data field 1 | Data field 2 | ... | Data field N |
Наименование | Категория данных | Размер блока данных | Спецификация полей | Поле данных 1 | Поле данных 2 | ... | Поле данных N |
Размер, байт | 1 | 2 | 1+ | 0+ | 0+ | ... | 0+ |
Где: N — количество полей.
Спецификация полей (FSPEC) не претерпела изменений по сравнению с редакцией 2.1.
Поля данных
[править | править код]Классификация полей данных следующая.
- Стандартное поле данных.
- Поле фиксированной длины.
- Поле расширяемой длины.
- Поле явно заданной длины.
- Поле с повторением.
- Составное поле.
- Поле данных специального назначения.
- Зарезервированное поле данных.
Стандартное поле данных
[править | править код]Поле фиксированной длины
[править | править код]Должно содержать фиксированное количество байт.
Поле расширяемой длины
[править | править код]Имеет переменную длину. Начинается с основной части, заранее определенной длины, за которой следует некоторое количество дополнительных частей заранее определенной длины. Все дополнительные части равной длины. Наличие следующего дополнительного поля определяется младшим значащим битом в последнем байте предыдущей части (основной или дополнительной). Такой бит называется индикатором расширения поля и обозначается FX.
Часть | Основная | Дополнительные | |||||
Размер, байт | n | i | ... | i | |||
Наименование/
обозначение |
Данные | FX=1 | Данные | FX=1 | ... | Данные | FX=0 |
Поле явно заданной длины
[править | править код]Начинается с байта, который содержит длину поля в байтах, включая и сам этот байт.
Байт | 0 | 1...n |
Наименование | Размер поля | Данные |
Размер, байт | 1 | n |
Поле с повторением
[править | править код]Имеет переменную длину. Начинается с байта, значение которого равно количеству подполей. Подполя одинакового размера, следуют друг за другом.
Байт | 0 | 1...i | (i+1)... | |
Обозначение | REP=N | Data Subfield 1 | ... | Data Subfield N |
Наименование | Количество повторений | Подполе 1 | ... | Подполе N |
Размер, байт | 1 | n | ... | n |
Составное поле
[править | править код]Имеет переменную длину. Состоит из основного подполя, за которым следуют подполя данных. Основное поле определяет наличие подполей и может расширяться с помощью механизма расширения поля (FX). Подполя могут быть фиксированной длины, расширяемой длины, явно заданной длины и с повторениями, но не могут быть составными.
Байт | 0...m | (m+1)... | |||
Обозначение | Primary Subfield | Data Subfield 1 | Data Subfield 2 | ... | Data Subfield N |
Наименование | Основное подполе | Подполе данных 1 | Подполе данных 2 | ... | Подполе данных N |
Размер, байт | 1+ | 0+ | 0+ | ... | 0+ |
Байт | 0 | 1 | 2...(L-1) | L | |||||||||||||||||||||
Бит | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16...(M-8) | M-7 | M-6 | M-5 | M-4 | M-3 | M-2 | M-1 | M |
Обозначение | SF1 | SF2 | SF3 | SF4 | SF5 | SF6 | SF7 | FX | SF8 | SF9 | SF10 | SF11 | SF12 | SF13 | SF14 | FX | SF15...SF[N-7] | SF[N-6] | SF[N-5] | SF[N-4] | SF[N-3] | SF[N-2] | SF[N-1] | SF[N] | FX=0 |
Где:
- L+1 — размер спецификации подполей в байтах;
- M+1 — размер спецификации подполей в битах;
- N — количество подполей;
- SF[Y] — индикатор наличия подполя Y;
- FX — индикатор расширения поля.
Значение в бите SF[Y] определяет присутствует ли подполе Y в поле. Если SF[Y] равно 0, то подполе отсутствует, если SF[Y] равно 1, то подполе присутствует.
Если FX равен 1, то следующий байт — это продолжение основного подполя. Если FX равен 0, то это означает, что достигнут конец основного подполя.
Поле данных специального назначения
[править | править код]Используется для передачи произвольных данных. Поле прозрачно для незаинтересованных пользователей, то есть содержимое может быть проигнорировано.
Когда поле используется, для него выделяется бит в FSPEC. Обозначение такого бита: SP.
Первый байт поля содержит размер поля в байтах, включая этот байт. Следующие байты содержат произвольные данные.
Байт | 0 | 1...n |
Наименование | Размер поля | Данные |
Размер, байт | 1 | n |
Зарезервированное поле данных
[править | править код]Используется только в спецификации ASTERIX редакции 2.1 и более ранних.
Предназначено для предоставления механизма внесения промежуточных изменений в заданную категорию. Поле прозрачно, как и поле специального назначения.
Первый байт поля содержит размер поля в байтах, включая этот байт. Следующие байты содержат произвольные данные.
Байт | 0 | 1...n |
Наименование | Размер поля | Данные |
Размер, байт | 1 | n |
Начиная со спецификации ASTERIX редакции 2.2 поле не используется.