ПРЕДВАРИТЕЛЬНО

Сообщения передают события, происходящие в системе. События передаются по мере возникновения, при невозможности отправки копятся в ограниченном FIFO буфере. Размер буфера зависит от версии программы (и транспорта).

Сообщение может передаваться:

Структура сообщения – последовательность CBOR-элементов (CBOR-stream, rfc7049 section 3.1):

VERSION(int=-1), HEADER, EVENT, EVENT, ...

VERSION иденифицирует дальнейшую структуру, должен быть integer и равен -1. Иначе формат сообщения считать неизвестным.

HEADER идентифицирует отправляющую систему CAS360 и несет общие параметры, EVENT несет информацию об одном событии.

Каждый HEADER и EVENT – CBOR map, то есть, набор полей key:value (key это int).

Могут приходить сообщения без EVENT, это keepalive – используются для проверки связи при отсутствии полезных данных.

Идентификаторы полей (key) выбираются в диапазоне -24..23, чтобы занимали 1 байт в CBOR.

Элемент VERSION

Тип integer, значение определяет дальнейшее содержимое. Для нижеописанной структуры значение =-1. Чтобы отличать от сенсоров в случае чего.

Поля HEADER

NameKeyValue TypeDescription

CASID


SERIAL

1


2

uint32


uint32

Unique (hopefully) identifier of sending CAS360 system, generated automatically (linked to tablet PC hardware) 

Looks like arbitrary number

Serial number  of sending CAS1 reader

UPTIME3uint32Device Uptime at pack sending, seconds




Поля EVENT

NameKeyValue TypeDescription

UPTIME

TIME

-4

-3

uint32

uint32

Device Uptime of Event, seconds

Время события, секунды с UNIX epoch, UTC+0

SEQ-2uint16Циклический сквозной порядковый номер события, для обнаружения потерь
KIND-1intРод события: 0-SYS, 1-CAS, ...
EVENT0intСобытие
...

дополнительные поля, специфичные для каждого события EVENT

Дополнительные поля событий KIND=0 (SYS)

События SYS:

EVENT

Value

Description

Test-123test event (CLI: msgtest N)
Reset0

Дополнительные поля события Test

Name

Key

Value Type

Description

TESTCNT

-456

uint

Счетчик тестовых событий

Дополнительные поля событий KIND=1 (CAS)

События CAS:

EVENT

Value

Description

ZoneRed0Вход в Красную зону
ZoneYellow1Вход в Желтую зону
ZoneGreen2Вход в Зеленую зону
ZoneOut3Выход (пропадание метки из эфира)
ZonePark4Парковка метки (прекращение обнаружения)

Вход в какую-то зону предполагает выход из предыдущей.

Дополнительные поля событий 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_CM5int16Дистанция до метки, см
BEARER6int (enum)

Носитель метки:  0-Generic, 1-Person, 2-Vehicle, 3-Stationary

Опционально, при отсутствии =Generic

SECTOR_DEG

SECTOR_256

7

8

array_uint16[2]

array_uint8[2]

Сектор [ dir angle ], градусы 

Сектор [ dir angle ], в 1/256 круга (1.40625 градуса)

dir - центральное направление сектора, angle - размах сектора

Отсчет вправо от направления вперед транспортного средства (на экране CAS360 по часовой стрелке от направления вверх)

Опционально, при отсутствии – сектор не определен (полный круг)