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:
committed by
Guido Günther
parent
60ce9ecb3c
commit
22e4c33606
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user