ha(ux): пробинг отдаёт fatal-reason (одна сессия на недоступном модуле); SWITCH_PROPS без битов

This commit is contained in:
2026-09-29 18:12:31 +03:00
parent 976a2dcbb8
commit 5f09716dce
6 changed files with 25 additions and 20 deletions
+7 -6
View File
@@ -226,11 +226,12 @@ def probe_template(
device_port: int = 80,
listen_port: int = 10275,
timeout: float = 10.0,
) -> tuple[Template | None, dict[Prop, Value]]:
) -> tuple[Template | None, dict[Prop, Value], str | None]:
"""Определяет шаблон по ответам, перебирая A/B/F короткими сессиями.
Используется только когда oem_model неизвестна ядру: для известных
моделей шаблон берётся из C-таблиц без лишних подключений.
Возвращает (template, properties, fatal_reason): если модуль недоступен
(или нет слотов/ключ не тот), перебор бессмыслен и причина возвращается
третьим элементом, чтобы вызывающий не открывал ещё одну сессию.
"""
answered: set[Prop] = set()
properties: dict[Prop, Value] = {}
@@ -248,10 +249,10 @@ def probe_template(
# Модуль доступен, но свойств шаблона нет — пробуем дальше.
continue
# Недоступен/нет слотов/ключ — перебор шаблонов бессмыслен.
return None, properties
return None, properties, result.reason
answered |= result.answered
properties.update(result.properties)
detected = classify_template(answered)
if detected is not None:
return detected, properties
return classify_template(answered), properties
return detected, properties, None
return classify_template(answered), properties, None