64 lines
4.0 KiB
Markdown
64 lines
4.0 KiB
Markdown
# Переход на SET protocol v2
|
||
|
||
Цель перехода — не поддерживать два развивающихся протокола. GUI protocol v1
|
||
и ProtoCAN после начала миграции получают только исправления критических ошибок;
|
||
новые команды добавляются исключительно в SETP v2.
|
||
|
||
## Этап 1. Транспорт и обнаружение
|
||
|
||
1. Подключить `set_protocol.c` к прошивке.
|
||
2. Реализовать v2 `PING`, `DEVICE_INFO` и `CAPABILITIES`.
|
||
3. В SETGUI при подключении отправлять v2 PING.
|
||
4. Только после полного тайм-аута пробовать v1 PING для старого оборудования.
|
||
5. После первого ответа фиксировать версию до закрытия соединения.
|
||
|
||
Нельзя разбирать v1 и v2 одним header после поля version: их размеры различны.
|
||
|
||
## Этап 2. Одна карта данных
|
||
|
||
Все измерения, уставки и состояния получают стабильный 32-битный адрес и
|
||
описание в `CATALOG`. Обычные операции изделия переводятся на:
|
||
|
||
- `READ` — разовое получение;
|
||
- `WRITE` — изменение конфигурации;
|
||
- `SUBSCRIBE/PUBLISH` — значения для экранов и графиков.
|
||
|
||
Команды изделия из диапазона `0x1000..0x7FFF` остаются только для действий,
|
||
которые не являются чтением или записью данных: поиск 1-Wire, нажатие экранной
|
||
кнопки, запуск самотеста и аналогичные операции.
|
||
|
||
## Этап 3. Real-time
|
||
|
||
SETGUI получает каталог, строит подписку из реально видимых сигналов и обновляет
|
||
графики по `timestamp_ms` устройства. Полные снимки всего прибора по таймеру не
|
||
передаются. При перегрузке устройство отбрасывает старую телеметрию, сохраняя
|
||
ответы на команды.
|
||
|
||
## Этап 4. Загрузчик
|
||
|
||
1. Реализовать staging/A-B backend и `FW_STATUS`.
|
||
2. Проверить resume после обрыва на каждом допустимом offset.
|
||
3. Проверить битый CRC блока и битый SHA-256 образа.
|
||
4. Для серийной прошивки включить обязательную подпись и закрепить public key в
|
||
bootloader/защищённой области.
|
||
5. Проверить rollback при reset до подтверждения успешного старта приложения.
|
||
|
||
До выполнения этих пунктов кнопка удалённой активации не считается безопасной.
|
||
|
||
## Этап 5. Носители
|
||
|
||
- UART/RS-232/RS-485 и USB CDC используют один stream parser.
|
||
- Ethernet TCP подключается к тому же parser без новой логики команд.
|
||
- Ethernet UDP использует `setp_frame_decode_datagram()`.
|
||
- CAN использует `set_can.c`; после reassembly кадр передаётся тому же router.
|
||
|
||
## Этап 6. Завершение
|
||
|
||
Когда все поддерживаемые изделия отвечают на v2:
|
||
|
||
1. убрать fallback v1 из штатного режима SETGUI;
|
||
2. оставить отдельную legacy-утилиту только для обслуживания старых приборов;
|
||
3. удалить дублирующиеся карты регистров и device-specific сообщения, которые
|
||
заменены общей картой;
|
||
4. зафиксировать v2 test vectors в CI прошивок и SETGUI.
|