Files
templates/c/set-protocol/MIGRATION.md

64 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Переход на 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.