From 8c7f86ac839ece6532cf3c9d9c6abe890be07107 Mon Sep 17 00:00:00 2001 From: Maxim Devaev Date: Thu, 13 Feb 2025 00:56:11 +0200 Subject: [PATCH] switch firmware version == 6 --- kvmd/apps/kvmd/switch/proto.py | 2 ++ kvmd/apps/kvmd/switch/state.py | 2 +- switch/switch.uf2 | Bin 192512 -> 192512 bytes testenv/linters/vulture-wl.py | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/kvmd/apps/kvmd/switch/proto.py b/kvmd/apps/kvmd/switch/proto.py index d4f43f84..43da118f 100644 --- a/kvmd/apps/kvmd/switch/proto.py +++ b/kvmd/apps/kvmd/switch/proto.py @@ -94,6 +94,7 @@ class UnitFlags: changing_busy: bool flashing_busy: bool has_downlink: bool + has_hpd: bool @dataclasses.dataclass(frozen=True) @@ -137,6 +138,7 @@ class UnitState(Unpackable): # pylint: disable=too-many-instance-attributes changing_busy=bool(flags & 0x80), flashing_busy=bool(flags & 0x40), has_downlink=bool(flags & 0x02), + has_hpd=bool(flags & 0x04), ), ch=ch, beacons=cls.__make_flags6(beacons), diff --git a/kvmd/apps/kvmd/switch/state.py b/kvmd/apps/kvmd/switch/state.py index e49d0062..5b06db0a 100644 --- a/kvmd/apps/kvmd/switch/state.py +++ b/kvmd/apps/kvmd/switch/state.py @@ -49,7 +49,7 @@ class _UnitInfo: # ===== class StateCache: # pylint: disable=too-many-instance-attributes - __FW_VERSION = 5 + __FW_VERSION = 6 __FULL = 0xFFFF __SUMMARY = 0x01 diff --git a/switch/switch.uf2 b/switch/switch.uf2 index c3f374918ede7a622f94ed8ec0663ca4aaebed8f..c6581ab91f1673ffe79a59b8ad5b662e4d2656cf 100644 GIT binary patch delta 20167 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 delta 19926 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