diff --git a/c/set-protocol/ports/android/kotlin/ru/setcorp/setflash/core/CanBridgeProtocol.kt b/c/set-protocol/ports/android/kotlin/ru/setcorp/setflash/core/CanBridgeProtocol.kt index 9a6cd0b..599c6df 100644 --- a/c/set-protocol/ports/android/kotlin/ru/setcorp/setflash/core/CanBridgeProtocol.kt +++ b/c/set-protocol/ports/android/kotlin/ru/setcorp/setflash/core/CanBridgeProtocol.kt @@ -175,7 +175,9 @@ object CanBridgeProtocol { stats = Stats( frames = values[0], crcErrors = values[1], - resyncBytes = values[2] + values[3], + // The former Kotlin parser counted one resync step + // for a rejected CRC frame in addition to stray bytes. + resyncBytes = values[1] + values[2] + values[3], sequenceLost = values[4], ) } diff --git a/doc/CROSS_PLATFORM_AUDIT.md b/doc/CROSS_PLATFORM_AUDIT.md index 871dc1e..eaaba20 100644 --- a/doc/CROSS_PLATFORM_AUDIT.md +++ b/doc/CROSS_PLATFORM_AUDIT.md @@ -15,12 +15,15 @@ Python вызывает это ядро через `python/protocan/native.py`, Android — через `ports/android/setprotocol_jni.c`. Файлы на Python и Kotlin являются портами и -не должны содержать wire-алгоритм. +не должны содержать 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_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, статусы, окна блоков |