3.0 KiB
3.0 KiB
Аудит общего кода 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-порт.