Files
templates/doc/CROSS_PLATFORM_AUDIT.md

44 lines
3.0 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` |
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-порт.