feat(station): Montana-Black-Produkt-ID -> Ziel ledshield_rgb

Meldet eine Lampe @qcx.montana.black.ledshield.rgb(-dev), sucht die Station
jetzt ledshield_rgb_(dev|prod).img statt zufaellig das E27-Image.
Produktname/Ziel aus qcl_product_info.c der Original-Firmware.
This commit is contained in:
Robin von Bülow
2026-09-25 17:39:41 +02:00
parent 8294688e37
commit 09ee206906
5 changed files with 8 additions and 6 deletions
+1
View File
@@ -40,6 +40,7 @@ _BASE = [
("klyqa.lighting.cw-ww.e14", "e14_cw", "Klyqa E14 CW/WW"),
("klyqa.lighting.cw-ww.gu10", "gu10_cw", "Klyqa GU10 CW/WW"),
("klyqa.lighting.cw-ww.g95", "g95_cw", "Klyqa G95 Vintage CW/WW"),
("qcx.montana.black.ledshield.rgb", "ledshield_rgb", "Montana Black RGB LED Shield"),
]
_UNSAFE = re.compile(r"[^0-9A-Za-z+\-_.]")
+2 -1
View File
@@ -33,7 +33,8 @@ from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent))
import products
TARGETS = ("evk", "e27_rgb", "e14_rgb", "gu10_rgb", "e27_cw", "e14_cw", "gu10_cw", "g95_cw")
TARGETS = ("evk", "e27_rgb", "e14_rgb", "gu10_rgb", "e27_cw", "e14_cw", "gu10_cw", "g95_cw",
"ledshield_rgb")
PATH_RE = re.compile(r"^/ninlight_(" + "|".join(TARGETS) + r")_ota\.img$")
TRAILER_SIZE = 512
TRAILER_MAGIC = b"NINL"
+3 -3
View File
@@ -7,12 +7,12 @@ import products # noqa: E402
def test_table_is_complete():
"""Sieben Geraete in beiden Schreibweisen der Produkt-ID, plus das EVK, das nur eine
"""Acht Geraete in beiden Schreibweisen der Produkt-ID, plus das EVK, das nur eine
Produktions-ID hat."""
assert len(products.PRODUCTS) == 15
assert len(products.PRODUCTS) == 17
targets = {p.target for p in products.PRODUCTS.values()}
assert targets == {"evk", "e27_rgb", "e14_rgb", "gu10_rgb",
"e27_cw", "e14_cw", "gu10_cw", "g95_cw"}
"e27_cw", "e14_cw", "gu10_cw", "g95_cw", "ledshield_rgb"}
def test_table_carries_no_variant():