def _set_rgb(self, *colors, brightness: float = None) -> bool: if colors is None or len(colors) == 0: self.logger.error('RGB group out of range') return False # only allow what the hardware permits colors = colors[0:len(self._cmd_set_rgb)] with self.device_open(): if brightness is None: brightness = self._get_brightness() if brightness == 0.0: brightness = 80.0 brightness = scale_brightness(brightness) args = [] for color in colors: args.append(to_color(color)) args.append(brightness) return self.run_command(self._cmd_set_rgb[len(colors) - 1], *args)
def _set_brightness(self, brightness: float) -> bool: """ Set the brightness level """ with self.device_open(): bits = self._get_led_mode() if bits.color_count == 0: return False value = self.run_with_result(self._cmd_get_rgb[bits.color_count - 1]) if value is None: return False level = scale_brightness(brightness) data = bytearray(value) for num in range(0, bits.color_count): data[(num * 4) + 3] = level return self.run_command(self._cmd_set_rgb[bits.color_count - 1], data)
def _observer(self, change): if self._refreshing or change.old == change.new: return if change.name == 'color': self._set(LED.Command.SET_LED_COLOR, to_color(change.new)) elif change.name == 'mode': self._set(LED.Command.SET_LED_MODE, change.new) elif change.name == 'brightness': self._set_brightness(scale_brightness(change.new)) if change.old == 0 and change.new > 0: self._set(LED.Command.SET_LED_STATE, 1) elif change.old > 0 and change.new == 0: self._set(LED.Command.SET_LED_STATE, 0) else: raise ValueError("Unknown LED property: %s" % change.new) if not self._restoring: self._dirty = True if self.led_type != LEDType.BACKLIGHT: self._update_prefs()
def _get_brightness(self) -> float: value = self.run_with_result(UChromaLaptop.Command.GET_BRIGHTNESS) if value is None: return 0.0 return scale_brightness(int(value[1]), True)
def _set_brightness(self, level: float): return self.run_command(UChromaLaptop.Command.SET_BRIGHTNESS, 0x01, scale_brightness(level))
def dock_brightness(self, brightness: float) -> bool: return self.run_command( UChromaWirelessMouse.Command.SET_DOCK_BRIGHTNESS, scale_brightness(brightness))
def dock_brightness(self) -> float: value = self.run_with_result( UChromaWirelessMouse.Command.GET_DOCK_BRIGHTNESS) if value is None: return 0.0 return scale_brightness(int(value[0]), True)