"""Asynchronous SET v2 USB updater for the STM32F407VE single-slot port.""" from __future__ import annotations import struct from .qt_compat import QObject, QTimer, Signal, QSerialPort from setprotocol.core import (Frame, FrameFlag, FrameParser, build_frame, decode_response, DeviceInfo, FirmwareBegin, FirmwareFlag, encode_firmware_data) APP_BASE = 0x08010000 APP_SIZE = 0x70000 BOOT_MODEL = "STM32F407-EMU-USB-BOOT" def validate_image(image): if image.base_address != APP_BASE or not 8 <= len(image.data) <= APP_SIZE: raise ValueError("Нужен образ приложения для 0x08010000, размером до 448 КБ") sp, pc = struct.unpack_from("