fbd-dev-led-multicolor: Support red, green, blue and white LED colors

Provide our own supports_color method to specify which colors are
actually implemented by the driver. RGB LEDs could provide different
colors as well such as orange, purple, etc. but those are not supported
yet.
This commit is contained in:
Dylan Van Assche
2024-06-09 11:21:20 +02:00
committed by Guido Günther
parent 60ce9ecb3c
commit 22e4c33606
2 changed files with 22 additions and 1 deletions
+21
View File
@@ -144,6 +144,26 @@ fbd_dev_led_multicolor_set_color (FbdDevLed *led,
} }
static gboolean
fbd_dev_led_multicolor_supports_color (FbdDevLed *led,
FbdFeedbackLedColor color)
{
switch(color) {
case FBD_FEEDBACK_LED_COLOR_WHITE:
return TRUE;
case FBD_FEEDBACK_LED_COLOR_RED:
return TRUE;
case FBD_FEEDBACK_LED_COLOR_GREEN:
return TRUE;
case FBD_FEEDBACK_LED_COLOR_BLUE:
return TRUE;
default:
g_warning ("Color unsupported: %d", color);
return FALSE;
}
}
static void static void
fbd_dev_led_multicolor_class_init (FbdDevLedMulticolorClass *klass) fbd_dev_led_multicolor_class_init (FbdDevLedMulticolorClass *klass)
{ {
@@ -151,6 +171,7 @@ fbd_dev_led_multicolor_class_init (FbdDevLedMulticolorClass *klass)
fbd_dev_led_class->probe = fbd_dev_led_multicolor_probe; fbd_dev_led_class->probe = fbd_dev_led_multicolor_probe;
fbd_dev_led_class->set_color = fbd_dev_led_multicolor_set_color; fbd_dev_led_class->set_color = fbd_dev_led_multicolor_set_color;
fbd_dev_led_class->supports_color = fbd_dev_led_multicolor_supports_color;
} }
+1 -1
View File
@@ -60,7 +60,7 @@ test_fbd_dev_led_multicolor (FbdUmockdevFixture *fixture, gconstpointer unused)
led = fbd_dev_led_multicolor_new (dev, &err); led = fbd_dev_led_multicolor_new (dev, &err);
g_assert_no_error (err); g_assert_no_error (err);
g_assert_cmpint (fbd_dev_led_get_max_brightness (led), ==, 248); g_assert_cmpint (fbd_dev_led_get_max_brightness (led), ==, 248);
g_assert_true (fbd_dev_led_supports_color (led, FBD_FEEDBACK_LED_COLOR_RGB)); g_assert_true (fbd_dev_led_supports_color (led, FBD_FEEDBACK_LED_COLOR_BLUE));
g_assert_true (fbd_dev_led_start_periodic (led, 50, 50)); g_assert_true (fbd_dev_led_start_periodic (led, 50, 50));
g_assert_finalize_object (led); g_assert_finalize_object (led);