docs: добавь поясняющие комментарии к модулям и инструментам
This commit is contained in:
@@ -1,3 +1,7 @@
|
||||
# Клиент A/B-загрузчика ProtoCAN с оконной передачей блоков по восемь байт. Ответы принимаются
|
||||
# только для целевого адреса и текущей сессии; продвижение по этапам зависит от подтверждения,
|
||||
# а не от факта отправки.
|
||||
|
||||
"""Legacy ProtoCAN Boot client ported from Gui_Android CanFirmwareProtocol.kt."""
|
||||
from __future__ import annotations
|
||||
|
||||
@@ -66,6 +70,8 @@ class CanBootTransfer:
|
||||
and p.msg_type == 12 and p.pm == 1 and p.device_type == t.device_type
|
||||
and p.device == t.device and p.body >> 8 == t.session_id and len(frame.data) == 8)
|
||||
|
||||
# Окно содержит до 16 блоков. Последний неполный блок заполняется 0xFF,
|
||||
# но метаданные образа сохраняют исходную длину без этого дополнения.
|
||||
def _window(self):
|
||||
total = (len(self.image.data) + 7) // 8
|
||||
self._window_end = min(total, self.next_block + 16)
|
||||
@@ -78,6 +84,8 @@ class CanBootTransfer:
|
||||
command = ProtoCanId.parse(frame.can_id).body & 255
|
||||
expected_command = {"enter": 2, "image": 3, "compat": 4, "erase": 5,
|
||||
"data": 0, "verify": 6, "commit": 7, "reboot": 9}.get(self.stage)
|
||||
# Позднее подтверждение предыдущего этапа нельзя применять к новому:
|
||||
# оно не продвигает автомат и не считается ошибкой текущего запроса.
|
||||
if command != expected_command:
|
||||
return [], ""
|
||||
status, slot, expected = struct.unpack_from("<BBH", frame.data)
|
||||
|
||||
Reference in New Issue
Block a user