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:
committed by
Guido Gunther
parent
253d178cfc
commit
5fc0372b45
@@ -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;
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user