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.h"
|
||||||
#include "fbd-enums.h"
|
#include "fbd-enums.h"
|
||||||
|
#include "fbd-dev-led.h"
|
||||||
#include "fbd-dev-leds.h"
|
#include "fbd-dev-leds.h"
|
||||||
#include "fbd-feedback-led.h"
|
#include "fbd-feedback-led.h"
|
||||||
#include "fbd-udev.h"
|
#include "fbd-udev.h"
|
||||||
|
|
||||||
#include <gio/gio.h>
|
#include <gio/gio.h>
|
||||||
|
|
||||||
#define LED_BRIGHTNESS_ATTR "brightness"
|
|
||||||
#define LED_MAX_BRIGHTNESS_ATTR "max_brightness"
|
#define LED_MAX_BRIGHTNESS_ATTR "max_brightness"
|
||||||
#define LED_MULTI_INDEX_ATTR "multi_index"
|
#define LED_MULTI_INDEX_ATTR "multi_index"
|
||||||
#define LED_MULTI_INTENSITY_ATTR "multi_intensity"
|
#define LED_MULTI_INTENSITY_ATTR "multi_intensity"
|
||||||
@@ -26,19 +26,6 @@
|
|||||||
#define LED_PATTERN_ATTR "pattern"
|
#define LED_PATTERN_ATTR "pattern"
|
||||||
#define LED_SUBSYSTEM "leds"
|
#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:
|
* 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_DEFINE_TYPE_WITH_CODE (FbdDevLeds, fbd_dev_leds, G_TYPE_OBJECT,
|
||||||
G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init));
|
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 *
|
static FbdDevLed *
|
||||||
find_led_by_color (FbdDevLeds *self, FbdFeedbackLedColor color)
|
find_led_by_color (FbdDevLeds *self, FbdFeedbackLedColor color)
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -6,9 +6,9 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "fbd-feedback-led.h"
|
#include "fbd-feedback-led.h"
|
||||||
|
#include "fbd-udev.h"
|
||||||
|
|
||||||
#include <glib-object.h>
|
#include <glib-object.h>
|
||||||
#include <gudev/gudev.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ sources = [
|
|||||||
'fbd-error.c',
|
'fbd-error.c',
|
||||||
'fbd-dev-vibra.c',
|
'fbd-dev-vibra.c',
|
||||||
'fbd-dev-sound.c',
|
'fbd-dev-sound.c',
|
||||||
|
'fbd-dev-led.c',
|
||||||
'fbd-dev-leds.c',
|
'fbd-dev-leds.c',
|
||||||
'fbd-event.c',
|
'fbd-event.c',
|
||||||
'fbd-feedback-base.c',
|
'fbd-feedback-base.c',
|
||||||
|
|||||||
Reference in New Issue
Block a user