Исправить порядок слов BALZAM CAN и добавить поддержку пульта МПУ

This commit is contained in:
2026-10-02 16:41:25 +03:00
parent a63c1dd7d8
commit 025a3fde28
7 changed files with 74 additions and 21 deletions
+7 -2
View File
@@ -31,12 +31,15 @@ def decode(raw_id: int, data: bytes, *, ide: bool = True,
)
result = pc.Decoded(pid, len(data), bytes(data), ide=ide, rtr=rtr,
protocol="BALZAM 167", device_label=frame.device_name,
message_label="BALZAM регистры")
message_label=("BALZAM данные" if frame.from_device
else "BALZAM команды"))
result.summary = frame.summary
result.fields = [
("Протокол", "BALZAM 167 legacy eCAN"),
("Узел", "%d — %s" % (frame.device, frame.device_name)),
("Направление", "от устройства" if frame.from_device else "к устройству"),
("Направление", frame.route),
("Отправитель", frame.device_name if frame.from_device else "ПМ"),
("Получатель", "ПМ" if frame.from_device else frame.device_name),
("Начальный адрес", "0x%04X" % frame.start_address),
("Маска трёх слов", "0b%s" % format(frame.present_mask, "03b")),
]
@@ -46,6 +49,8 @@ def decode(raw_id: int, data: bytes, *, ide: bool = True,
"0x%04X %s" % (item.address, item.name or "регистр"),
"0x%04X (%d)" % (item.value, item.signed_value),
))
if not frame.from_device and item.address == 0x7F:
result.fields.append(("Команды ПМ", frame.command_description(item.value)))
if frame.present_mask == 0:
result.warnings.append("В адресном слове не отмечен ни один регистр")
return result