예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
파일: led.py 프로젝트: cyanogen/uchroma
    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()
예제 #4
0
 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)
예제 #5
0
 def _set_brightness(self, level: float):
     return self.run_command(UChromaLaptop.Command.SET_BRIGHTNESS, 0x01,
                             scale_brightness(level))
예제 #6
0
파일: mouse.py 프로젝트: sj26/uchroma
 def dock_brightness(self, brightness: float) -> bool:
     return self.run_command(
         UChromaWirelessMouse.Command.SET_DOCK_BRIGHTNESS,
         scale_brightness(brightness))
예제 #7
0
파일: mouse.py 프로젝트: sj26/uchroma
 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)