feat(setprotocol): define system payload schemas
This commit is contained in:
@@ -93,7 +93,59 @@ broadcast; на broadcast-запрос отвечать нельзя, если
|
||||
Неизвестный тип не является ошибкой кадрирования. Устройство отвечает
|
||||
`UNSUPPORTED`, если запрос был адресован ему и требовал ответа.
|
||||
|
||||
## 5. Телеметрия реального времени
|
||||
## 5. Системные payload schema v1
|
||||
|
||||
Все описанные ниже поля входят в body ответа **после** обязательного
|
||||
`status u16`. Строки передаются в UTF-8 без завершающего нуля. Версия схемы
|
||||
отделена от версии кадра, чтобы поля можно было расширять независимо.
|
||||
|
||||
### DEVICE_INFO
|
||||
|
||||
```text
|
||||
schema_version u16 = 1
|
||||
device_class u16
|
||||
hardware_version u32
|
||||
firmware_version u32
|
||||
dictionary_version u32
|
||||
serial_number u64
|
||||
model_length u8 (0..63)
|
||||
model u8[model_length], UTF-8
|
||||
```
|
||||
|
||||
Числовые версии являются значениями изделия; рекомендуемая упаковка
|
||||
`major.minor.patch.build` — по одному байту от старшего к младшему.
|
||||
`device_class` назначается в реестре изделий SET, а `dictionary_version`
|
||||
меняется при несовместимом изменении адресов или типов общей карты.
|
||||
|
||||
### CAPABILITIES
|
||||
|
||||
```text
|
||||
schema_version u16 = 1
|
||||
max_payload u16 (1..512 для базового профиля)
|
||||
interface_mask u32 (бит с номером setp_iface_t)
|
||||
feature_flags u32
|
||||
max_read_items u16
|
||||
max_write_items u16
|
||||
max_subscriptions u16
|
||||
max_publish_items u16
|
||||
```
|
||||
|
||||
Стабильные `feature_flags`: `READ=bit0`, `WRITE=bit1`, `CATALOG=bit2`,
|
||||
`SUBSCRIBE=bit3`, `LOG_READ=bit4`, `FIRMWARE=bit5`, `DIAGNOSTICS=bit6`.
|
||||
Нулевой лимит означает, что соответствующая функция не поддерживается.
|
||||
|
||||
Эталонные body без status:
|
||||
|
||||
```text
|
||||
DEVICE_INFO (SET-01):
|
||||
01 00 34 12 02 00 01 00 04 00 03 00 44 33 22 11
|
||||
EF CD AB 89 67 45 23 01 06 53 45 54 2D 30 31
|
||||
|
||||
CAPABILITIES (RS232 + CAN, READ + CATALOG + SUBSCRIBE):
|
||||
01 00 00 02 0A 00 00 00 0D 00 00 00 40 00 20 00 04 00 18 00
|
||||
```
|
||||
|
||||
## 6. Телеметрия реального времени
|
||||
|
||||
### SUBSCRIBE
|
||||
|
||||
@@ -131,7 +183,7 @@ repeat item_count times:
|
||||
Телеметрия имеет меньший приоритет, чем ответы и прошивка. При переполнении
|
||||
очереди разрешено отбросить старый `PUBLISH`, но нельзя частично передать кадр.
|
||||
|
||||
## 6. Прошивка
|
||||
## 7. Прошивка
|
||||
|
||||
Типы:
|
||||
|
||||
@@ -175,7 +227,7 @@ offset u32 | data_length u16 | flags u16 | data_crc32 u32 | data[]
|
||||
CRC32 защищает линию, SHA-256 — целостность образа, подпись — происхождение.
|
||||
Один CRC не является защитой от подмены прошивки.
|
||||
|
||||
## 7. Привязки к физическим интерфейсам
|
||||
## 8. Привязки к физическим интерфейсам
|
||||
|
||||
### RS-232, RS-485, USB CDC
|
||||
|
||||
|
||||
Reference in New Issue
Block a user