Move LED device to separate file

We separate out the led as different LED types have different
ways to set patterns, etc
This commit is contained in:
Guido Günther
2023-02-10 15:15:12 +00:00
committed by Guido Gunther
parent 253d178cfc
commit 5fc0372b45
5 changed files with 69 additions and 36 deletions
+34
View File
@@ -0,0 +1,34 @@
/*
* Copyright (C) 2020 Purism SPC
* SPDX-License-Identifier: GPL-3.0+
* Author: Guido Günther <agx@sigxcpu.org>
*
* 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;
}
+32
View File
@@ -0,0 +1,32 @@
/*
* Copyright (C) 2023 Purism SPC
*
* SPDX-License-Identifier: GPL-3.0+
*/
#pragma once
#include "fbd-feedback-led.h"
#include <gudev/gudev.h>
#include <glib-object.h>
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
+1 -35
View File
@@ -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 <gio/gio.h>
#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)
{
+1 -1
View File
@@ -6,9 +6,9 @@
#pragma once
#include "fbd-feedback-led.h"
#include "fbd-udev.h"
#include <glib-object.h>
#include <gudev/gudev.h>
G_BEGIN_DECLS
+1
View File
@@ -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',