Files
templates/doc/CROSS_PLATFORM_AUDIT.md

48 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Аудит общего кода 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` |
| ПМ67 / TMS320F2812: CMD_UPLOAD, CRC16/Modbus и проверка ответа | `c/set-protocol/src/tms2812.c` |
Python вызывает это ядро через `python/protocan/native.py`, Android — через
`ports/android/setprotocol_jni.c`. Файлы на Python и Kotlin являются портами и
не должны содержать wire-алгоритм. В старых портах ещё встречаются fallback-
реализации; они отмечены ниже и удаляются по мере включения обязательной
загрузки C-ядра.
## Найденное общее, которое ещё нужно перенести
| Приоритет | Android | SETGUI | Что вынести в C |
|---|---|---|---|
| 0 | `ports/android/.../CanBridgeProtocol.kt`, `GuiProtocol.kt` | Python transport wrappers | удалить оставшиеся алгоритмические fallback, так как codec/parser уже есть в C |
| 1 | остальные команды `core/Tms2812Protocol.kt` | `core/tms_terminal.py` | оставшиеся команды и parser непрерывной телеметрии ПМ67/2812; CMD_UPLOAD уже перенесён |
| 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-порт.