Allow constant lighting of notification LED through the setting of frequency in theme.json to zero.

This commit is contained in:
knoppix knoppix
2025-04-23 20:02:12 +00:00
committed by Guido Günther
parent b181c942ad
commit 0e88863a3d
2 changed files with 17 additions and 10 deletions
+16 -10
View File
@@ -115,25 +115,31 @@ fbd_dev_led_start_periodic_default (FbdDevLed *led,
guint freq)
{
FbdDevLedPrivate *priv;
g_autoptr (GError) err = NULL;
g_autofree gchar *str = NULL;
gboolean success = FALSE;
gdouble max;
gdouble t;
g_return_val_if_fail (FBD_IS_DEV_LED (led), FALSE);
g_return_val_if_fail (max_brightness_percentage <= 100, FALSE);
priv = fbd_dev_led_get_instance_private (led);
max = priv->max_brightness * (max_brightness_percentage / 100.0);
/* ms mHz T/2 */
t = 1000.0 * 1000.0 / freq / 2.0;
str = g_strdup_printf ("0 %d %d %d\n", (gint)t, (gint)max, (gint)t);
g_debug ("Freq %d mHz, Brightness: %d%%, Blink pattern: %s", freq, max_brightness_percentage, str);
if (freq) {
g_autofree gchar *str = NULL;
g_autoptr (GError) err = NULL;
gdouble t;
success = fbd_udev_set_sysfs_path_attr_as_string (priv->dev, LED_PATTERN_ATTR, str, &err);
if (!success)
g_warning ("Failed to set led pattern: %s", err->message);
/* ms mHz T/2 */
t = 1000.0 * 1000.0 / freq / 2.0;
str = g_strdup_printf ("0 %d %d %d\n", (gint)t, (gint)max, (gint)t);
g_debug ("Freq %d mHz, Brightness: %d%%, Blink pattern: %s", freq, max_brightness_percentage,
str);
success = fbd_udev_set_sysfs_path_attr_as_string (priv->dev, LED_PATTERN_ATTR, str, &err);
if (!success)
g_warning ("Failed to set led pattern: %s", err->message);
} else {
g_debug ("Constant light, Brightness: %d%%", max_brightness_percentage);
success = fbd_dev_led_set_brightness (led, (gint)max);
}
return success;
}
+1
View File
@@ -93,6 +93,7 @@ test_fbd_dev_led_flash (FbdUmockdevFixture *fixture, gconstpointer unused)
g_assert_cmpint (fbd_dev_led_get_max_brightness (led), ==, 255);
g_assert_true (fbd_dev_led_supports_color (led, FBD_FEEDBACK_LED_COLOR_FLASH));
g_assert_true (fbd_dev_led_start_periodic (led, 50, 50));
g_assert_true (fbd_dev_led_start_periodic (led, 50, 0));
g_assert_finalize_object (led);
}