This commit is contained in:
Jonas Bengtsson
2026-10-08 07:26:04 +02:00
parent a1af8d68c9
commit 406fdc61ac
13 changed files with 1750 additions and 89 deletions
+22 -1
View File
@@ -66,4 +66,25 @@ def decode_quality(raw: int) -> QualityInfo:
name = _QUALITY_NAMES.get(low)
if name is None:
name = f"{_class_of(low).value}_0x{low:02X}"
return QualityInfo(raw=raw, name=name, quality_class=_class_of(low))
return QualityInfo(raw=raw, name=name, quality_class=_class_of(low))
def status_text(raw: int) -> str:
"""Clear-text status with the raw code in parentheses (SPECIFICATION §7).
Every reporter writes quality this way — e.g. ``BAD / COMM FAILURE
(0x18)`` — so nobody decodes hex by hand while the raw code stays
available for unambiguous correlation with vendor documentation.
"""
info = decode_quality(raw)
classes = {c.value for c in QualityClass}
name = info.name
for cls in classes:
prefix = cls + "_"
if name.startswith(prefix):
sub = name[len(prefix):].replace("_", " ")
name = f"{cls} / {sub}" if sub else cls
break
else:
name = name.replace("_", " ")
return f"{name} ({info.raw_hex})"