Files
templates/doc/CROSS_PLATFORM_AUDIT.md

3.0 KiB
Raw Blame History

Аудит общего кода GUI_Android и SETGUI

Дата проверки: 2026-09-04.

Уже является общим C-ядром

Область Каноническая реализация
SETProtocol v2, CAN segmentation, firmware flow, telemetry c/set-protocol/src/set_*.c
ProtoCAN ID, кадр, parser, link, CRC-CCITT c/set-protocol/src/pcan_*.c
GUI frame и каталог c/set-protocol/src/gui_*.c
CAN Бальзам c/set-protocol/src/balsam_can.c
График, тренды и спектр c/set-protocol/src/set_plot.c, set_trends.c, set_spectrum.c
ПМ35 / TMS320F28335: MODBUS-подобные запросы, CRC16/Modbus, ответы и каталог команд c/set-protocol/src/periph28335.c

Python вызывает это ядро через python/protocan/native.py, Android — через ports/android/setprotocol_jni.c. Файлы на Python и Kotlin являются портами и не должны содержать wire-алгоритм.

Найденное общее, которое ещё нужно перенести

Приоритет Android SETGUI Что вынести в C
1 core/Tms2812Protocol.kt core/tms_flash.py, core/tms_terminal.py весь RS-протокол ПМ67/2812, CRC, команды и validators
2 core/Ds18b20Protocol.kt core/ds18b20.py кодеки списков/данных/EEPROM, CRC8 и значения датчиков
3 core/CanFirmwareProtocol.kt core/can_firmware.py автомат CAN boot, статусы, окна блоков
4 core/SlCanProtocol.kt adapters/slcan_adapter.py и CAN transport ASCII codec/parser SLCAN; доступ к COM остаётся в портах
5 core/FirmwareImage.kt core/firmware.py Intel HEX parser, CRC32/SHA и правила диапазонов

Это очередь миграции, а не разрешение поддерживать две реализации. При первом изменении любой строки из таблицы сначала создаётся соответствующий модуль C и общие тестовые векторы.

Что должно остаться платформенным

  • Compose и PySide widgets, навигация и внешний вид;
  • Android USB host, разрешения, foreground lifecycle;
  • Windows COM/MOXA/драйверы и выбор последовательного порта;
  • хранилище настроек, диалоги файлов и уведомления;
  • привязка моделей C к Kotlin/Python и локализованные сообщения UI.

Таким образом, язык GUI можно менять без повторного написания протокола: новый клиент реализует только FFI и свой транспортный/UI-порт.