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