From 5fc0372b453038f2dd75558b71bb429c46dcb6f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Sat, 21 Jan 2023 14:47:10 +0100 Subject: [PATCH] Move LED device to separate file We separate out the led as different LED types have different ways to set patterns, etc --- src/fbd-dev-led.c | 34 ++++++++++++++++++++++++++++++++++ src/fbd-dev-led.h | 32 ++++++++++++++++++++++++++++++++ src/fbd-dev-leds.c | 36 +----------------------------------- src/fbd-dev-leds.h | 2 +- src/meson.build | 1 + 5 files changed, 69 insertions(+), 36 deletions(-) create mode 100644 src/fbd-dev-led.c create mode 100644 src/fbd-dev-led.h diff --git a/src/fbd-dev-led.c b/src/fbd-dev-led.c new file mode 100644 index 0000000..0df3354 --- /dev/null +++ b/src/fbd-dev-led.c @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2020 Purism SPC + * SPDX-License-Identifier: GPL-3.0+ + * Author: Guido Günther + * + * See Documentation/ABI/testing/sysfs-class-led-trigger-pattern + */ + +#define G_LOG_DOMAIN "fbd-dev-led" + +#include "fbd-dev-led.h" +#include "fbd-udev.h" + +#define LED_BRIGHTNESS_ATTR "brightness" + +void +fbd_dev_led_free (FbdDevLed *led) +{ + g_object_unref (led->dev); + g_free (led); +} + +gboolean +fbd_dev_led_set_brightness (FbdDevLed *led, guint brightness) +{ + g_autoptr (GError) err = NULL; + + if (!fbd_udev_set_sysfs_path_attr_as_int (led->dev, LED_BRIGHTNESS_ATTR, brightness, &err)) { + g_warning ("Failed to setup brightness: %s", err->message); + return FALSE; + } + + return TRUE; +} diff --git a/src/fbd-dev-led.h b/src/fbd-dev-led.h new file mode 100644 index 0000000..43644c9 --- /dev/null +++ b/src/fbd-dev-led.h @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2023 Purism SPC + * + * SPDX-License-Identifier: GPL-3.0+ + */ +#pragma once + +#include "fbd-feedback-led.h" + +#include + +#include + +G_BEGIN_DECLS + +typedef struct _FbdDevLed { + GUdevDevice *dev; + guint max_brightness; + guint red_index; + guint green_index; + guint blue_index; + /* + * We just use the colors from the feedback until we + * do rgb mixing, etc + */ + FbdFeedbackLedColor color; +} FbdDevLed; + +void fbd_dev_led_free (FbdDevLed *led); +gboolean fbd_dev_led_set_brightness (FbdDevLed *led, guint brightness); + +G_END_DECLS diff --git a/src/fbd-dev-leds.c b/src/fbd-dev-leds.c index 4e7195b..66bd443 100644 --- a/src/fbd-dev-leds.c +++ b/src/fbd-dev-leds.c @@ -10,13 +10,13 @@ #include "fbd.h" #include "fbd-enums.h" +#include "fbd-dev-led.h" #include "fbd-dev-leds.h" #include "fbd-feedback-led.h" #include "fbd-udev.h" #include -#define LED_BRIGHTNESS_ATTR "brightness" #define LED_MAX_BRIGHTNESS_ATTR "max_brightness" #define LED_MULTI_INDEX_ATTR "multi_index" #define LED_MULTI_INTENSITY_ATTR "multi_intensity" @@ -26,19 +26,6 @@ #define LED_PATTERN_ATTR "pattern" #define LED_SUBSYSTEM "leds" -typedef struct _FbdDevLed { - GUdevDevice *dev; - guint max_brightness; - guint red_index; - guint green_index; - guint blue_index; - /* - * We just use the colors from the feedback until we - * do rgb mixing, etc - */ - FbdFeedbackLedColor color; -} FbdDevLed; - /** * FbdDevLeds: * @@ -59,27 +46,6 @@ static void initable_iface_init (GInitableIface *iface); G_DEFINE_TYPE_WITH_CODE (FbdDevLeds, fbd_dev_leds, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init)); - -static void -fbd_dev_led_free (FbdDevLed *led) -{ - g_object_unref (led->dev); - g_free (led); -} - -static gboolean -fbd_dev_led_set_brightness (FbdDevLed *led, guint brightness) -{ - g_autoptr (GError) err = NULL; - - if (!fbd_udev_set_sysfs_path_attr_as_int (led->dev, LED_BRIGHTNESS_ATTR, brightness, &err)) { - g_warning ("Failed to setup brightness: %s", err->message); - return FALSE; - } - - return TRUE; -} - static FbdDevLed * find_led_by_color (FbdDevLeds *self, FbdFeedbackLedColor color) { diff --git a/src/fbd-dev-leds.h b/src/fbd-dev-leds.h index 479be88..999dbd9 100644 --- a/src/fbd-dev-leds.h +++ b/src/fbd-dev-leds.h @@ -6,9 +6,9 @@ #pragma once #include "fbd-feedback-led.h" +#include "fbd-udev.h" #include -#include G_BEGIN_DECLS diff --git a/src/meson.build b/src/meson.build index a75cf6d..510306f 100644 --- a/src/meson.build +++ b/src/meson.build @@ -15,6 +15,7 @@ sources = [ 'fbd-error.c', 'fbd-dev-vibra.c', 'fbd-dev-sound.c', + 'fbd-dev-led.c', 'fbd-dev-leds.c', 'fbd-event.c', 'fbd-feedback-base.c',