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

4.0 KiB
Raw Blame History

Переход на 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.