diff --git a/src/fbd-dev-led-multicolor.c b/src/fbd-dev-led-multicolor.c index 29e0b7b..8432e5b 100644 --- a/src/fbd-dev-led-multicolor.c +++ b/src/fbd-dev-led-multicolor.c @@ -21,23 +21,26 @@ #define LED_MULTI_INDEX_BLUE "blue" #define LED_MULTI_INTENSITY_ATTR "multi_intensity" - -typedef struct _FbdDevLedMulticolor { - FbdDevLed parent; - +/** + * fbd-dev-led-multicolor: + * + * A multicolor led using the kernels "multi_intensitiy" + */ +typedef struct _FbdDevLedMulticolorPrivate { guint red_index; guint green_index; guint blue_index; -} FbdDevLedMulticolor; +} FbdDevLedMulticolorPrivate; -G_DEFINE_TYPE (FbdDevLedMulticolor, fbd_dev_led_multicolor, FBD_TYPE_DEV_LED) +G_DEFINE_TYPE_WITH_PRIVATE (FbdDevLedMulticolor, fbd_dev_led_multicolor, FBD_TYPE_DEV_LED) static gboolean fbd_dev_led_probe_multicolor (FbdDevLed *led, GError **error) { FbdDevLedMulticolor *self = FBD_DEV_LED_MULTICOLOR (led); + FbdDevLedMulticolorPrivate *priv = fbd_dev_led_multicolor_get_instance_private (self); GUdevDevice *dev = fbd_dev_led_get_device (led); const gchar *name, *path; const gchar * const *index; @@ -67,13 +70,13 @@ fbd_dev_led_probe_multicolor (FbdDevLed *led, GError **error) for (int i = 0; index[i] != NULL; i++) { g_debug ("Index: %s", index[i]); if (g_strcmp0 (index[i], LED_MULTI_INDEX_RED) == 0) { - self->red_index = counter; + priv->red_index = counter; counter++; } else if (g_strcmp0 (index[i], LED_MULTI_INDEX_GREEN) == 0) { - self->green_index = counter; + priv->green_index = counter; counter++; } else if (g_strcmp0 (index[i], LED_MULTI_INDEX_BLUE) == 0) { - self->blue_index = counter; + priv->blue_index = counter; counter++; } else { g_warning ("Unsupport LED color index: %d %s", counter, index[i]); @@ -93,6 +96,7 @@ fbd_dev_led_start_periodic_multicolor (FbdDevLed *led, guint freq) { FbdDevLedMulticolor *self = FBD_DEV_LED_MULTICOLOR (led); + FbdDevLedMulticolorPrivate *priv = fbd_dev_led_multicolor_get_instance_private (self); GUdevDevice *dev = fbd_dev_led_get_device (led); g_autofree char *intensity = NULL; g_autoptr (GError) err = NULL; @@ -104,24 +108,24 @@ fbd_dev_led_start_periodic_multicolor (FbdDevLed *led, max_brightness = fbd_dev_led_get_max_brightness (led); switch (color) { case FBD_FEEDBACK_LED_COLOR_WHITE: - colors[self->red_index] = max_brightness; - colors[self->green_index] = max_brightness; - colors[self->blue_index] = max_brightness; + colors[priv->red_index] = max_brightness; + colors[priv->green_index] = max_brightness; + colors[priv->blue_index] = max_brightness; break; case FBD_FEEDBACK_LED_COLOR_RED: - colors[self->red_index] = max_brightness; - colors[self->green_index] = 0; - colors[self->blue_index] = 0; + colors[priv->red_index] = max_brightness; + colors[priv->green_index] = 0; + colors[priv->blue_index] = 0; break; case FBD_FEEDBACK_LED_COLOR_GREEN: - colors[self->red_index] = 0; - colors[self->green_index] = max_brightness; - colors[self->blue_index] = 0; + colors[priv->red_index] = 0; + colors[priv->green_index] = max_brightness; + colors[priv->blue_index] = 0; break; case FBD_FEEDBACK_LED_COLOR_BLUE: - colors[self->red_index] = 0; - colors[self->green_index] = 0; - colors[self->blue_index] = max_brightness; + colors[priv->red_index] = 0; + colors[priv->green_index] = 0; + colors[priv->blue_index] = max_brightness; break; default: g_warning("Unhandled color: %d\n", color); diff --git a/src/fbd-dev-led-multicolor.h b/src/fbd-dev-led-multicolor.h index 79f17fe..fc713c1 100644 --- a/src/fbd-dev-led-multicolor.h +++ b/src/fbd-dev-led-multicolor.h @@ -11,8 +11,12 @@ G_BEGIN_DECLS #define FBD_TYPE_DEV_LED_MULTICOLOR fbd_dev_led_multicolor_get_type() -G_DECLARE_FINAL_TYPE (FbdDevLedMulticolor, fbd_dev_led_multicolor, FBD, DEV_LED_MULTICOLOR, FbdDevLed) +G_DECLARE_DERIVABLE_TYPE (FbdDevLedMulticolor, fbd_dev_led_multicolor, FBD, DEV_LED_MULTICOLOR, FbdDevLed) FbdDevLed *fbd_dev_led_multicolor_new (GUdevDevice *dev, GError **err); +struct _FbdDevLedMulticolorClass { + FbdDevLedClass parent_class; +}; + G_END_DECLS