diff --git a/flux_led/__main__.py b/flux_led/__main__.py index 51d2bd0..28b5ccd 100755 --- a/flux_led/__main__.py +++ b/flux_led/__main__.py @@ -484,14 +484,22 @@ def valid(pattern: int): @staticmethod def valtostr(pattern): if PresetPatternStrip.valid(pattern): - # workaround, use 99 to mimic app numbers - num = pattern - 99 + num = PresetPatternStrip.from_internal(pattern) pat = PresetPatternStrip(num) return pat.name else: print(pattern) return '' + @staticmethod + def to_internal(pattern : int) -> int: + return pattern + 99 + + @staticmethod + def from_internal(pattern : int) -> int: + return pattern - 99 + + class PresetPattern(IntEnum): seven_color_cross_fade = 0x25 red_gradual_change = 0x26 @@ -1538,7 +1546,7 @@ def setProtocol(self, protocol): def setPresetPattern(self, pattern, speed): if not ( PresetPattern.valid(pattern) - or (self.stripprotocol and PresetPattern.valid_strip(pattern)) + or (self.stripprotocol and PresetPattern.valid_strip(PresetPatternStrip.to_internal(pattern))) ): # print "Pattern must be between 0x25 and 0x38" raise Exception @@ -1550,8 +1558,8 @@ def setPresetPattern(self, pattern, speed): # print "speed {}, delay 0x{:02x}".format(speed,delay) pattern_set_msg = bytearray([0x61]) if self.stripprotocol: - pattern_set_msg.append(pattern >> 8) - pattern_set_msg.append(pattern & 0xFF) + pattern_set_msg.append(PresetPatternStrip.to_internal(pattern) >> 8) + pattern_set_msg.append(PresetPatternStrip.to_internal(pattern) & 0xFF) else: pattern_set_msg.append(pattern) pattern_set_msg.append(delay) @@ -1669,7 +1677,8 @@ def effect_current(self) -> int: if not self.stripprotocol: return self.raw_state[3] else: - return (self.raw_state[3] << 8) + self.raw_state[4] - 99 + pattern = (self.raw_state[3] << 8) + self.raw_state[4] + return PresetPatternStrip.from_internal(pattern) class BulbScanner: def __init__(self):