Move PM35 protocol into shared C core
This commit is contained in:
43
doc/CROSS_PLATFORM_AUDIT.md
Normal file
43
doc/CROSS_PLATFORM_AUDIT.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# Аудит общего кода 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-порт.
|
||||
Reference in New Issue
Block a user