feat: add unified SET protocol v2
This commit is contained in:
63
c/set-protocol/MIGRATION.md
Normal file
63
c/set-protocol/MIGRATION.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# Переход на 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.
|
||||
Reference in New Issue
Block a user