diff --git a/openrgb/utils.py b/openrgb/utils.py index 7403495..1683d1d 100644 --- a/openrgb/utils.py +++ b/openrgb/utils.py @@ -66,6 +66,17 @@ class ZoneType(IntEnum): SINGLE = 0 LINEAR = 1 MATRIX = 2 + LINEAR_LOOP = 3 + MATRIX_LOOP_X = 4 + MATRIX_LOOP_Y = 5 + SEGMENTED = 6 + + @classmethod + def _missing_(cls, value): + member = int.__new__(cls, value) + member._name_ = f"UNKNOWN_{value}" + member._value_ = value + return member class PacketType(IntEnum): @@ -468,7 +479,7 @@ def unpack(cls, data: Iterator[int], version: int, *args) -> ZoneData: leds_max = parse_var('I', data) num_leds = parse_var('I', data) matrix_zone_size = parse_var('H', data) - if zone_type == ZoneType.MATRIX: + if matrix_zone_size > 0: height = parse_var('I', data) width = parse_var('I', data) matrix: list[list[Optional[int]]] = [[] for x in range(height)]