ПРЕДВАРИТЕЛЬНО
Сообщения передают события, происходящие в системе. События передаются по мере возникновения, при невозможности отправки копятся в ограниченном FIFO буфере. Размер буфера зависит от версии программы (и транспорта).
Сообщение может передаваться:
- по IP-сети (LTE) на заданные в конфигурации HTTPS-сервер и его контекст. Upload бинарных данных с типом Content-Type: application/cbor
- через LoRa инфраструктуру на заданный порт
Структура сообщения – последовательность CBOR-элементов:
VERSION(int=3), HEADER, EVENT, EVENT, ...
VERSION иденифицирует дальнейшую структуру, должен быть integer и равен 3. Иначе формат сообщения считать неизвестным.
HEADER идентифицирует отправляющую систему CAS360 и несет общие параметры, EVENT несет информацию об одном событии.
Каждый HEADER и EVENT – CBOR map, то есть, набор полей key:value (key это int).
Идентификаторы полей (key) выбираются в диапазоне -24..23, чтобы занимали 1 байт в CBOR.
Элемент VERSION
Тип integer, значение определяет дальнейшее содержимое. Для нижеописанной структуры значение =3. Чтобы отличать от сенсоров в случае чего.
Поля HEADER
| Name | Key | Value Type | Description |
|---|---|---|---|
| CASID | 1 | uint32 | Unique (hopefully) identifier of sending CAS360 system, generated automatically (linked to tablet PC hardware) Looks like arbitrary number (advised is HEX representation to user – to match CAS360 software UI and logs) |
Поля EVENT
| Name | Key | Value Type | Description |
|---|---|---|---|
| TIME | -3 | uint32 | Время события, секунды с UNIX epoch. |
| SEQ | -2 | uint16 | Циклический сквозной порядковый номер события, для обнаружения потерь |
| KIND | -1 | int | Род события: 1-CAS, ... |
| EVENT | 0 | int | Событие |
| ... | дополнительные поля, специфичные для каждого события EVENT |
Дополнительные поля событий KIND=1 (CAS)
События CAS: (предварительно)
EVENT | Value | Description |
|---|---|---|
| ZoneRed | 0 | Вход в Красную зону |
| ZoneYellow | 1 | Вход в Желтую зону |
| ZoneGreen | 2 | Вход в Зеленую зону |
| ZoneOut | 3 | Выход (пропадание метки из эфира) |
| ZonePark | 4 | Парковка метки (прекращение обнаружения) |
Вход в какую-то зону предполагает выход из предыдущей.
Дополнительные поля событий CAS. Множественные Key это альтернативы, придет какой-то один.
Name | Key | Value Type | Description |
|---|---|---|---|
EUI SERIAL CASID | 1 2 3 4 | uint64 uint32 uint32 <TBD> | Идентификатор метки. EUI64 (для меток не-ULUN) серийный номер (для меток ULUN, пересчитывать в EUI64) CAS_ID для систем CAS360 (при сближении с другой системой CAS360) reserved Основным идентификатором меток (по IEEE 802.12.4) является EUI64. В метках ULUN EUI64 однозначно связан с серийным номером. CAS_ID не связан с серийными номерами меток и анкеров; используется, потому что система CAS360 в целом не имеет одного меточного серийного номера. |
| DIST_CM | 5 | int16 | Дистанция до метки, см |
| BEARER | 6 | int (enum) | Носитель метки: 0-Generic, 1-Person, 2-Vehicle, 3-Stationary Опционально, при отсутствии =Generic |
SECTOR_DEG SECTOR_256 | 7 8 | array_uint16[2] array_uint8[2] | Сектор [ from to ], градусы Сектор [ from to ], в 1/256 круга (1.40625 градуса) Отсчет вправо от направления вперед транспортного средства (на экране CAS360 по часовой стрелке от направления вверх) Опционально, при отсутствии – сектор не определен (полный круг) |