Files
templates/python/firmware_image

Общие образы прошивки

SETGUI и климатический bridge используют один пакет и один C99-парсер c/set-protocol/src/firmware_image.c. Python преобразует результат C в HexSegment; алгоритмического fallback нет. Карта Flash, план записи, заполнение промежутков FF и стандартные CRC32/SHA256 доступны через core. Запуск программатора, файловый allowlist и журнал остаются в приложении.

Строгая политика HEX одинакова для обоих потребителей: checksum, обязательный EOF, запрет данных после EOF, запрет любых перекрытий, проверка длины и адресов. Непрерывный образ имеет заданный предел до выделения его буфера. Профиль STM32F407VE сохраняется для совместимости; другой MCU передаёт свой FlashLayout в функции планирования.

Из корня templates:

python c/set-protocol/tools/build_host.py --output python/protocan/native/setprotocol.dll
python -m pip install -e ./python
python -m unittest discover -s python/tests -p test_firmware_image_shared.py

На Linux/macOS имя результата — libsetprotocol.so/libsetprotocol.dylib. Также поддерживается явный путь SETPROTOCOL_LIBRARY. Старая DLL без API образов выдаёт понятную ошибку с требованием пересборки.

from firmware_image.core import parse_intel_hex, contiguous_image
segments = parse_intel_hex(':0100000001FE\n:00000001FF')
image, base = contiguous_image(':0100000001FE\n:00000001FF', maximum_size=1024)