forked from drath/libratbag
Convert LED effect rate in Hz to effect duration in ms
As discussed in https://github.com/libratbag/piper/issues/175
This commit is contained in:
committed by
Benjamin Tissoires
parent
109cc69da9
commit
9b3c33a2fe
@@ -426,12 +426,12 @@ org.freedesktop.ratbag1.Led
|
||||
|
||||
The color depth of this LED as one of the constants in libratbag-enums.h
|
||||
|
||||
.. js:attribute:: EffectRate
|
||||
.. js:attribute:: EffectDuration
|
||||
|
||||
:type: u
|
||||
:flags: read-write, mutable
|
||||
|
||||
The effect rate in Hz, possible values are in the range 100 - 20000
|
||||
The effect duration in ms, possible values are in the range 0 - 10000
|
||||
|
||||
.. js:attribute:: Brightness
|
||||
|
||||
|
||||
@@ -179,28 +179,28 @@ static int ratbagd_led_set_color(sd_bus *bus,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ratbagd_led_get_effect_rate(sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error)
|
||||
static int ratbagd_led_get_effect_duration(sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error)
|
||||
{
|
||||
struct ratbagd_led *led = userdata;
|
||||
int rate;
|
||||
|
||||
rate = ratbag_led_get_effect_rate(led->lib_led);
|
||||
rate = ratbag_led_get_effect_duration(led->lib_led);
|
||||
return sd_bus_message_append(reply, "u", rate);
|
||||
}
|
||||
|
||||
static int ratbagd_led_set_effect_rate(sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *m,
|
||||
void *userdata,
|
||||
sd_bus_error *error)
|
||||
static int ratbagd_led_set_effect_duration(sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *m,
|
||||
void *userdata,
|
||||
sd_bus_error *error)
|
||||
{
|
||||
struct ratbagd_led *led = userdata;
|
||||
unsigned int rate;
|
||||
@@ -210,19 +210,17 @@ static int ratbagd_led_set_effect_rate(sd_bus *bus,
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (rate < 100)
|
||||
rate = 100;
|
||||
else if (rate > 20000)
|
||||
rate = 20000;
|
||||
if (rate > 10000)
|
||||
rate = 10000;
|
||||
|
||||
r = ratbag_led_set_effect_rate(led->lib_led, rate);
|
||||
r = ratbag_led_set_effect_duration(led->lib_led, rate);
|
||||
|
||||
if (r == 0) {
|
||||
sd_bus *bus = sd_bus_message_get_bus(m);
|
||||
sd_bus_emit_properties_changed(bus,
|
||||
led->path,
|
||||
RATBAGD_NAME_ROOT ".Led",
|
||||
"EffectRate",
|
||||
"EffectDuration",
|
||||
NULL);
|
||||
}
|
||||
|
||||
@@ -290,8 +288,8 @@ const sd_bus_vtable ratbagd_led_vtable[] = {
|
||||
ratbagd_led_get_color, ratbagd_led_set_color, 0,
|
||||
SD_BUS_VTABLE_UNPRIVILEGED|SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
|
||||
SD_BUS_PROPERTY("ColorDepth", "u", NULL, offsetof(struct ratbagd_led, colordepth), SD_BUS_VTABLE_PROPERTY_CONST),
|
||||
SD_BUS_WRITABLE_PROPERTY("EffectRate", "u",
|
||||
ratbagd_led_get_effect_rate, ratbagd_led_set_effect_rate, 0,
|
||||
SD_BUS_WRITABLE_PROPERTY("EffectDuration", "u",
|
||||
ratbagd_led_get_effect_duration, ratbagd_led_set_effect_duration, 0,
|
||||
SD_BUS_VTABLE_UNPRIVILEGED|SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
|
||||
SD_BUS_WRITABLE_PROPERTY("Brightness", "u",
|
||||
ratbagd_led_get_brightness, ratbagd_led_set_brightness, 0,
|
||||
|
||||
@@ -76,21 +76,21 @@ static const struct ratbag_test_device ratbagd_test_device_descr = {
|
||||
{
|
||||
.mode = RATBAG_LED_OFF,
|
||||
.color = { .red = 255, .green = 0, .blue = 0 },
|
||||
.hz = 1,
|
||||
.ms = 1000,
|
||||
.brightness = 20,
|
||||
.type = RATBAG_LED_TYPE_LOGO,
|
||||
},
|
||||
{
|
||||
.mode = RATBAG_LED_ON,
|
||||
.color = { .red = 255, .green = 0, .blue = 0 },
|
||||
.hz = 1,
|
||||
.ms = 1000,
|
||||
.brightness = 20,
|
||||
.type = RATBAG_LED_TYPE_SIDE,
|
||||
},
|
||||
{
|
||||
.mode = RATBAG_LED_CYCLE,
|
||||
.color = { .red = 255, .green = 255, .blue = 0 },
|
||||
.hz = 3,
|
||||
.ms = 333,
|
||||
.brightness = 40,
|
||||
.type = RATBAG_LED_TYPE_SIDE,
|
||||
}
|
||||
@@ -145,13 +145,13 @@ static const struct ratbag_test_device ratbagd_test_device_descr = {
|
||||
{
|
||||
.mode = RATBAG_LED_ON,
|
||||
.color = { .red = 255, .green = 0, .blue = 0 },
|
||||
.hz = 1,
|
||||
.ms = 1000,
|
||||
.brightness = 20
|
||||
},
|
||||
{
|
||||
.mode = RATBAG_LED_CYCLE,
|
||||
.color = { .red = 255, .green = 255, .blue = 0 },
|
||||
.hz = 3,
|
||||
.ms = 333,
|
||||
.brightness = 40
|
||||
}
|
||||
},
|
||||
|
||||
@@ -293,7 +293,7 @@ hidpp20drv_read_led_1300(struct ratbag_led *led, struct hidpp20drv_data* data)
|
||||
break;
|
||||
case HIDPP20_LED_MODE_BREATHING:
|
||||
led->mode = RATBAG_LED_BREATHING;
|
||||
led->hz = state.breathing.period;
|
||||
led->ms = state.breathing.period;
|
||||
led->brightness = state.breathing.brightness;
|
||||
break;
|
||||
default:
|
||||
@@ -344,7 +344,7 @@ hidpp20drv_read_led_8070(struct ratbag_led *led, struct hidpp20drv_data* drv_dat
|
||||
led->color.red = h_led->color.red;
|
||||
led->color.green = h_led->color.green;
|
||||
led->color.blue = h_led->color.blue;
|
||||
led->hz = h_led->period; /* FIXME: should be ceil(1000.0 / h_led->period), but that would be very small */
|
||||
led->ms = h_led->period;
|
||||
led->brightness = h_led->brightness * 255 / 100;
|
||||
|
||||
rc = hidpp20_color_led_effects_get_info(drv_data->dev, &info);
|
||||
@@ -514,7 +514,7 @@ hidpp20drv_update_led_1300(struct ratbag_led *led, struct hidpp20drv_data *data)
|
||||
case RATBAG_LED_BREATHING:
|
||||
h_led.mode = HIDPP20_LED_MODE_BREATHING;
|
||||
h_led.breathing.brightness = led->brightness;
|
||||
h_led.breathing.period = led->hz;
|
||||
h_led.breathing.period = led->ms;
|
||||
h_led.breathing.timeout = 300;
|
||||
break;
|
||||
case RATBAG_LED_OFF:
|
||||
@@ -580,7 +580,7 @@ hidpp20drv_update_led_8070(struct ratbag_led *led, struct ratbag_profile* profil
|
||||
h_led->color.red = led->color.red;
|
||||
h_led->color.green = led->color.green;
|
||||
h_led->color.blue = led->color.blue;
|
||||
h_led->period = led->hz; /* FIXME: should be 1000 / led->hz, but that would be very small */
|
||||
h_led->period = led->ms;
|
||||
h_led->brightness = led->brightness * 100 / 255;
|
||||
|
||||
return RATBAG_SUCCESS;
|
||||
|
||||
@@ -127,7 +127,7 @@ test_read_led(struct ratbag_led *led)
|
||||
led->color.red = t_led.color.red;
|
||||
led->color.green = t_led.color.green;
|
||||
led->color.blue = t_led.color.blue;
|
||||
led->hz = t_led.hz;
|
||||
led->ms = t_led.ms;
|
||||
led->brightness = t_led.brightness;
|
||||
|
||||
/* The led type has to be the same anyway so make writing test
|
||||
@@ -148,7 +148,7 @@ test_write_button(struct ratbag_button *button,
|
||||
static int
|
||||
test_write_led(struct ratbag_led *led,
|
||||
enum ratbag_led_mode mode,
|
||||
struct ratbag_color color, unsigned int hz,
|
||||
struct ratbag_color color, unsigned int ms,
|
||||
unsigned int brightness)
|
||||
{
|
||||
/* check if the device is still valid */
|
||||
|
||||
@@ -239,7 +239,7 @@ struct ratbag_driver {
|
||||
* it. Look at commit() instead.
|
||||
*/
|
||||
int (*write_led)(struct ratbag_led *led, enum ratbag_led_mode mode,
|
||||
struct ratbag_color color, unsigned int hz,
|
||||
struct ratbag_color color, unsigned int ms,
|
||||
unsigned int brightness);
|
||||
|
||||
/* private */
|
||||
@@ -281,7 +281,7 @@ struct ratbag_led {
|
||||
uint32_t modes; /**< supported modes */
|
||||
struct ratbag_color color;
|
||||
enum ratbag_led_colordepth colordepth;
|
||||
unsigned int hz; /**< rate of action in hz */
|
||||
unsigned int ms; /**< duration of action in ms */
|
||||
unsigned int brightness; /**< brightness of the LED */
|
||||
bool dirty;
|
||||
};
|
||||
|
||||
@@ -70,7 +70,7 @@ struct ratbag_test_led {
|
||||
enum ratbag_led_type type;
|
||||
enum ratbag_led_mode mode;
|
||||
struct ratbag_test_color color;
|
||||
unsigned int hz;
|
||||
unsigned int ms;
|
||||
unsigned int brightness;
|
||||
};
|
||||
|
||||
|
||||
@@ -905,7 +905,7 @@ ratbag_device_has_capability(const struct ratbag_device *device,
|
||||
static inline enum ratbag_error_code
|
||||
write_led_helper(struct ratbag_device *device, struct ratbag_led *led)
|
||||
{
|
||||
return device->driver->write_led(led, led->mode, led->color, led->hz, led->brightness);
|
||||
return device->driver->write_led(led, led->mode, led->color, led->ms, led->brightness);
|
||||
}
|
||||
|
||||
/* FIXME: This is a temporary fix for all of the drivers that have yet to be
|
||||
@@ -1547,9 +1547,9 @@ ratbag_led_get_color(struct ratbag_led *led)
|
||||
}
|
||||
|
||||
LIBRATBAG_EXPORT int
|
||||
ratbag_led_get_effect_rate(struct ratbag_led *led)
|
||||
ratbag_led_get_effect_duration(struct ratbag_led *led)
|
||||
{
|
||||
return led->hz;
|
||||
return led->ms;
|
||||
}
|
||||
|
||||
LIBRATBAG_EXPORT unsigned int
|
||||
@@ -1596,13 +1596,13 @@ ratbag_led_get_colordepth(struct ratbag_led *led)
|
||||
}
|
||||
|
||||
LIBRATBAG_EXPORT enum ratbag_error_code
|
||||
ratbag_led_set_effect_rate(struct ratbag_led *led, unsigned int hz)
|
||||
ratbag_led_set_effect_duration(struct ratbag_led *led, unsigned int ms)
|
||||
{
|
||||
if (!ratbag_device_has_capability(led->profile->device,
|
||||
RATBAG_DEVICE_CAP_LED))
|
||||
return RATBAG_ERROR_CAPABILITY;
|
||||
|
||||
led->hz = hz;
|
||||
led->ms = ms;
|
||||
led->dirty = true;
|
||||
led->profile->dirty = true;
|
||||
return RATBAG_SUCCESS;
|
||||
|
||||
@@ -1268,15 +1268,15 @@ ratbag_led_get_colordepth(struct ratbag_led *led);
|
||||
/**
|
||||
* @ingroup led
|
||||
*
|
||||
* This function returns the LED effect rate.
|
||||
* This function returns the LED effect duration.
|
||||
*
|
||||
* @param led A previously initialized ratbag LED
|
||||
* @return The LED rate in Hz, can be 100 - 20000
|
||||
* @return The LED duration in ms, can be 0 - 10000
|
||||
*
|
||||
* @see ratbag_led_set_effect_rate
|
||||
* @see ratbag_led_set_effect_duration
|
||||
*/
|
||||
int
|
||||
ratbag_led_get_effect_rate(struct ratbag_led *led);
|
||||
ratbag_led_get_effect_duration(struct ratbag_led *led);
|
||||
/**
|
||||
* @ingroup led
|
||||
*
|
||||
@@ -1329,16 +1329,16 @@ ratbag_led_set_color(struct ratbag_led *led, struct ratbag_color color);
|
||||
* @ingroup led
|
||||
*
|
||||
* If the LED's mode is @ref RATBAG_LED_CYCLE or @ref RATBAG_LED_BREATHING
|
||||
* then this function sets the LED rate in Hz
|
||||
* then this function sets the LED duration in ms
|
||||
*
|
||||
* @param led A previously initialized ratbag LED
|
||||
* @param rate Effect rate in hz, 100 - 20000
|
||||
* @param rate Effect duration in ms, 0 - 10000
|
||||
* @return 0 on success or an error code otherwise.
|
||||
*
|
||||
* @see ratbag_led_get_effect_rate
|
||||
* @see ratbag_led_get_effect_duration
|
||||
*/
|
||||
enum ratbag_error_code
|
||||
ratbag_led_set_effect_rate(struct ratbag_led *led, unsigned int rate);
|
||||
ratbag_led_set_effect_duration(struct ratbag_led *led, unsigned int rate);
|
||||
|
||||
/**
|
||||
* @ingroup led
|
||||
|
||||
@@ -91,13 +91,13 @@ const struct ratbag_test_device sane_device = {
|
||||
{
|
||||
.mode = RATBAG_LED_ON,
|
||||
.color = { .red = 255, .green = 0, .blue = 0 },
|
||||
.hz = 1,
|
||||
.ms = 1000,
|
||||
.brightness = 20,
|
||||
},
|
||||
{
|
||||
.mode = RATBAG_LED_CYCLE,
|
||||
.color = { .red = 255, .green = 255, .blue = 0 },
|
||||
.hz = 3,
|
||||
.ms = 333,
|
||||
.brightness = 40,
|
||||
}
|
||||
},
|
||||
@@ -793,18 +793,18 @@ assert_led_equals(struct ratbag_led *l, struct ratbag_test_led e_l)
|
||||
{
|
||||
enum ratbag_led_mode mode;
|
||||
struct ratbag_color color;
|
||||
int brightness, hz;
|
||||
int brightness, ms;
|
||||
|
||||
ck_assert(l != NULL);
|
||||
mode = ratbag_led_get_mode(l);
|
||||
color = ratbag_led_get_color(l);
|
||||
hz = ratbag_led_get_effect_rate(l);
|
||||
ms = ratbag_led_get_effect_duration(l);
|
||||
brightness = ratbag_led_get_brightness(l);
|
||||
ck_assert_int_eq(mode, e_l.mode);
|
||||
ck_assert_int_eq(color.red, e_l.color.red);
|
||||
ck_assert_int_eq(color.green, e_l.color.green);
|
||||
ck_assert_int_eq(color.blue, e_l.color.blue);
|
||||
ck_assert_int_eq(hz, e_l.hz);
|
||||
ck_assert_int_eq(ms, e_l.ms);
|
||||
ck_assert_int_eq(brightness, e_l.brightness);
|
||||
}
|
||||
|
||||
@@ -876,7 +876,7 @@ START_TEST(device_leds_set)
|
||||
|
||||
ratbag_led_set_mode(l, RATBAG_LED_BREATHING);
|
||||
ratbag_led_set_color(l, c);
|
||||
ratbag_led_set_effect_rate(l, 11);
|
||||
ratbag_led_set_effect_duration(l, 90);
|
||||
ratbag_led_set_brightness(l, 22);
|
||||
|
||||
l = ratbag_profile_get_led(p, 0);
|
||||
@@ -887,7 +887,7 @@ START_TEST(device_leds_set)
|
||||
.green = c.green,
|
||||
.blue = c.blue
|
||||
},
|
||||
.hz = 11,
|
||||
.ms = 90,
|
||||
.brightness = 22
|
||||
};
|
||||
assert_led_equals(l, e_l);
|
||||
|
||||
@@ -811,17 +811,17 @@ class RatbagdLed(metaclass=MetaRatbag):
|
||||
return libratbag.ratbag_led_get_colordepth(self._led)
|
||||
|
||||
@property
|
||||
def effect_rate(self):
|
||||
"""The LED's effect rate in Hz, values range from 100 to 20000."""
|
||||
return libratbag.ratbag_led_get_effect_rate(self._led)
|
||||
def effect_duration(self):
|
||||
"""The LED's effect duration in ms, values range from 0 to 10000."""
|
||||
return libratbag.ratbag_led_get_effect_duration(self._led)
|
||||
|
||||
@effect_rate.setter
|
||||
def effect_rate(self, effect_rate):
|
||||
"""Set the effect rate in Hz. Allowed values range from 100 to 20000.
|
||||
@effect_duration.setter
|
||||
def effect_duration(self, effect_duration):
|
||||
"""Set the effect duration in ms. Allowed values range from 0 to 10000.
|
||||
|
||||
@param effect_rate The new effect rate, as int
|
||||
@param effect_duration The new effect duration, as int
|
||||
"""
|
||||
libratbag.ratbag_led_set_effect_rate(self._led, effect_rate)
|
||||
self._set_dbus_property("EffectDuration", "u", effect_duration)
|
||||
|
||||
@property
|
||||
def brightness(self):
|
||||
|
||||
@@ -147,22 +147,22 @@ def print_led(d, p, l, level):
|
||||
l.color[1],
|
||||
l.color[2]))
|
||||
elif l.mode == RatbagdLed.MODE_CYCLE:
|
||||
print(" " * level + "LED: {} type: {}, depth: {}, mode: {}, rate: {}, brightness: {}".format(l.index,
|
||||
types[l.type],
|
||||
depths[l.colordepth],
|
||||
leds[l.mode],
|
||||
l.effect_rate,
|
||||
l.brightness))
|
||||
print(" " * level + "LED: {} type: {}, depth: {}, mode: {}, duration: {}, brightness: {}".format(l.index,
|
||||
types[l.type],
|
||||
depths[l.colordepth],
|
||||
leds[l.mode],
|
||||
l.effect_duration,
|
||||
l.brightness))
|
||||
elif l.mode == RatbagdLed.MODE_BREATHING:
|
||||
print(" " * level + "LED: {} type: {}, depth: {}, mode: {}, color: {:02x}{:02x}{:02x}, rate: {}, brightness: {}".format(l.index,
|
||||
types[l.type],
|
||||
depths[l.colordepth],
|
||||
leds[l.mode],
|
||||
l.color[0],
|
||||
l.color[1],
|
||||
l.color[2],
|
||||
l.effect_rate,
|
||||
l.brightness))
|
||||
print(" " * level + "LED: {} type: {}, depth: {}, mode: {}, color: {:02x}{:02x}{:02x}, duration: {}, brightness: {}".format(l.index,
|
||||
types[l.type],
|
||||
depths[l.colordepth],
|
||||
leds[l.mode],
|
||||
l.color[0],
|
||||
l.color[1],
|
||||
l.color[2],
|
||||
l.effect_duration,
|
||||
l.brightness))
|
||||
|
||||
|
||||
def print_led_caps(d, p, l, level):
|
||||
@@ -340,11 +340,11 @@ def func_led_set(r, args):
|
||||
else:
|
||||
l.color = color
|
||||
try:
|
||||
rate = args.rate
|
||||
duration = args.duration
|
||||
except AttributeError:
|
||||
pass
|
||||
else:
|
||||
l.effect_rate = rate
|
||||
l.effect_duration = duration
|
||||
try:
|
||||
brightness = args.brightness
|
||||
except AttributeError:
|
||||
@@ -1146,14 +1146,14 @@ active profile if none is given.""",
|
||||
},
|
||||
{
|
||||
of_type: command,
|
||||
name: 'rate',
|
||||
help_str: 'The rate to set as current',
|
||||
name: 'duration',
|
||||
help_str: 'The duration to set as current',
|
||||
pos_args: [
|
||||
{
|
||||
of_type: argument,
|
||||
name: 'rate',
|
||||
name: 'duration',
|
||||
metavar: 'R',
|
||||
help_str: 'The rate in Hz to set as current',
|
||||
help_str: 'The duration in ms to set as current',
|
||||
arg_type: int,
|
||||
},
|
||||
],
|
||||
@@ -1488,7 +1488,7 @@ Examples:
|
||||
{0} dpi set 800
|
||||
{0} profile 0 led 0 set mode on
|
||||
{0} profile 0 led 0 set color ff00ff
|
||||
{0} profile 0 led 0 set rate 20
|
||||
{0} profile 0 led 0 set duration 50
|
||||
|
||||
Exit codes:
|
||||
0 Success
|
||||
|
||||
@@ -484,7 +484,7 @@ class TestRatbagCtlLED(TestRatbagCtl):
|
||||
r = self.launch_good_test("led 1 get test_device")
|
||||
self.assertEqual(r, "LED: 1 type: side, depth: rgb, mode: on, color: ff0000")
|
||||
r = self.launch_good_test("led 2 get test_device")
|
||||
self.assertEqual(r, "LED: 2 type: side, depth: rgb, mode: cycle, rate: 3, brightness: 40")
|
||||
self.assertEqual(r, "LED: 2 type: side, depth: rgb, mode: cycle, duration: 333, brightness: 40")
|
||||
self.launch_fail_test("led 0 get 10 test_device")
|
||||
self.launch_fail_test("led 10 get test_device")
|
||||
self.launch_fail_test("led 0 get test_device X")
|
||||
@@ -496,7 +496,7 @@ class TestRatbagCtlLED(TestRatbagCtl):
|
||||
r = self.launch_good_test("led 0 set mode cycle test_device")
|
||||
self.assertEqual(r, '')
|
||||
r = self.launch_good_test("led 0 get test_device")
|
||||
self.assertEqual(r, "LED: 0 type: logo, depth: rgb, mode: cycle, rate: 1, brightness: 20")
|
||||
self.assertEqual(r, "LED: 0 type: logo, depth: rgb, mode: cycle, duration: 1000, brightness: 20")
|
||||
self.launch_fail_test("led 0 set mode bicycle test_device")
|
||||
self.launch_fail_test("led 0 set mode test_device")
|
||||
self.launch_fail_test("led 0 set mode cycle test_device X")
|
||||
@@ -519,27 +519,27 @@ class TestRatbagCtlLED(TestRatbagCtl):
|
||||
self.launch_fail_test("led 1 set color 00ff00 test_device X")
|
||||
self.launch_fail_test("led 1 set color 00ff00 X test_device")
|
||||
|
||||
def test_led_n_set_rate(self):
|
||||
def test_led_n_set_duration(self):
|
||||
self.setProfile(0)
|
||||
r = self.launch_good_test("led 2 get test_device")
|
||||
self.assertEqual(r, "LED: 2 type: side, depth: rgb, mode: cycle, rate: 3, brightness: 40")
|
||||
r = self.launch_good_test("led 2 set rate 100 test_device")
|
||||
self.assertEqual(r, "LED: 2 type: side, depth: rgb, mode: cycle, duration: 333, brightness: 40")
|
||||
r = self.launch_good_test("led 2 set duration 10 test_device")
|
||||
self.assertEqual(r, '')
|
||||
r = self.launch_good_test("led 2 get test_device")
|
||||
self.assertEqual(r, "LED: 2 type: side, depth: rgb, mode: cycle, rate: 100, brightness: 40")
|
||||
self.launch_fail_test("led 2 set rate this_is_not_an_int test_device")
|
||||
self.launch_fail_test("led 2 set rate test_device")
|
||||
self.launch_fail_test("led 2 set rate 100 test_device X")
|
||||
self.launch_fail_test("led 2 set rate 100 X test_device")
|
||||
self.assertEqual(r, "LED: 2 type: side, depth: rgb, mode: cycle, duration: 10, brightness: 40")
|
||||
self.launch_fail_test("led 2 set duration this_is_not_an_int test_device")
|
||||
self.launch_fail_test("led 2 set duration test_device")
|
||||
self.launch_fail_test("led 2 set duration 100 test_device X")
|
||||
self.launch_fail_test("led 2 set duration 100 X test_device")
|
||||
|
||||
def test_led_n_set_brightness(self):
|
||||
self.setProfile(2)
|
||||
r = self.launch_good_test("led 1 get test_device")
|
||||
self.assertEqual(r, "LED: 1 type: side, depth: rgb, mode: cycle, rate: 3, brightness: 40")
|
||||
self.assertEqual(r, "LED: 1 type: side, depth: rgb, mode: cycle, duration: 333, brightness: 40")
|
||||
r = self.launch_good_test("led 1 set brightness 100 test_device")
|
||||
self.assertEqual(r, '')
|
||||
r = self.launch_good_test("led 1 get test_device")
|
||||
self.assertEqual(r, "LED: 1 type: side, depth: rgb, mode: cycle, rate: 3, brightness: 100")
|
||||
self.assertEqual(r, "LED: 1 type: side, depth: rgb, mode: cycle, duration: 333, brightness: 100")
|
||||
self.launch_fail_test("led 1 set brightness this_is_not_an_int test_device")
|
||||
self.launch_fail_test("led 1 set brightness test_device")
|
||||
self.launch_fail_test("led 1 set brightness 100 test_device X")
|
||||
@@ -554,19 +554,19 @@ class TestRatbagCtlLED(TestRatbagCtl):
|
||||
self.assertEqual(r, "LED: 0 type: logo, depth: rgb, mode: on, color: ff0000")
|
||||
r = self.launch_good_test("led 0 set mode cycle brightness 100 test_device")
|
||||
r = self.launch_good_test("led 0 get test_device")
|
||||
self.assertEqual(r, "LED: 0 type: logo, depth: rgb, mode: cycle, rate: 1, brightness: 100")
|
||||
r = self.launch_good_test("led 0 set mode cycle rate 100 brightness 255 test_device")
|
||||
self.assertEqual(r, "LED: 0 type: logo, depth: rgb, mode: cycle, duration: 1000, brightness: 100")
|
||||
r = self.launch_good_test("led 0 set mode cycle duration 100 brightness 255 test_device")
|
||||
r = self.launch_good_test("led 0 get test_device")
|
||||
self.assertEqual(r, "LED: 0 type: logo, depth: rgb, mode: cycle, rate: 100, brightness: 255")
|
||||
self.assertEqual(r, "LED: 0 type: logo, depth: rgb, mode: cycle, duration: 100, brightness: 255")
|
||||
r = self.launch_good_test("led 0 set mode on color 00ff00 test_device")
|
||||
r = self.launch_good_test("led 0 get test_device")
|
||||
self.assertEqual(r, "LED: 0 type: logo, depth: rgb, mode: on, color: 00ff00")
|
||||
r = self.launch_good_test("led 0 set rate 100 brightness 200 mode cycle test_device")
|
||||
r = self.launch_good_test("led 0 set duration 100 brightness 200 mode cycle test_device")
|
||||
r = self.launch_good_test("led 0 get test_device")
|
||||
self.assertEqual(r, "LED: 0 type: logo, depth: rgb, mode: cycle, rate: 100, brightness: 200")
|
||||
r = self.launch_good_test("led 0 set rate 100 brightness 200 mode cycle brightness 100 test_device")
|
||||
self.assertEqual(r, "LED: 0 type: logo, depth: rgb, mode: cycle, duration: 100, brightness: 200")
|
||||
r = self.launch_good_test("led 0 set duration 100 brightness 200 mode cycle brightness 100 test_device")
|
||||
r = self.launch_good_test("led 0 get test_device")
|
||||
self.assertEqual(r, "LED: 0 type: logo, depth: rgb, mode: cycle, rate: 100, brightness: 100")
|
||||
self.assertEqual(r, "LED: 0 type: logo, depth: rgb, mode: cycle, duration: 100, brightness: 100")
|
||||
self.launch_fail_test("led 0 set brightness 10 mode bicycle test_device")
|
||||
|
||||
def test_prefix_led(self):
|
||||
|
||||
@@ -974,17 +974,17 @@ class RatbagdLed(_RatbagdDBus):
|
||||
return self._get_dbus_property("ColorDepth")
|
||||
|
||||
@GObject.Property
|
||||
def effect_rate(self):
|
||||
"""The LED's effect rate in Hz, values range from 100 to 20000."""
|
||||
return self._get_dbus_property("EffectRate")
|
||||
def effect_duration(self):
|
||||
"""The LED's effect duration in ms, values range from 0 to 10000."""
|
||||
return self._get_dbus_property("EffectDuration")
|
||||
|
||||
@effect_rate.setter
|
||||
def effect_rate(self, effect_rate):
|
||||
"""Set the effect rate in Hz. Allowed values range from 100 to 20000.
|
||||
@effect_duration.setter
|
||||
def effect_duration(self, effect_duration):
|
||||
"""Set the effect duration in ms. Allowed values range from 0 to 10000.
|
||||
|
||||
@param effect_rate The new effect rate, as int
|
||||
@param effect_duration The new effect duration, as int
|
||||
"""
|
||||
self._set_dbus_property("EffectRate", "u", effect_rate)
|
||||
self._set_dbus_property("EffectDuration", "u", effect_duration)
|
||||
|
||||
@GObject.Property
|
||||
def brightness(self):
|
||||
|
||||
Reference in New Issue
Block a user