From 52436b2045639f1e70c7d25aeacef1dd701fed33 Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 23 Feb 2025 14:25:36 +0100 Subject: [PATCH] Add virtual led basic example --- 06_virtual_led_basic/Makefile | 7 +++++ 06_virtual_led_basic/test_module.c | 43 ++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 06_virtual_led_basic/Makefile create mode 100644 06_virtual_led_basic/test_module.c diff --git a/06_virtual_led_basic/Makefile b/06_virtual_led_basic/Makefile new file mode 100644 index 0000000..b909b3c --- /dev/null +++ b/06_virtual_led_basic/Makefile @@ -0,0 +1,7 @@ +obj-m += test_module.o + +all: + make -C $(LINUX_MODULES_FOLDER)/build M=$(PWD) modules + +clean: + make -C $(LINUX_MODULES_FOLDER)/build M=$(PWD) clean diff --git a/06_virtual_led_basic/test_module.c b/06_virtual_led_basic/test_module.c new file mode 100644 index 0000000..767462e --- /dev/null +++ b/06_virtual_led_basic/test_module.c @@ -0,0 +1,43 @@ +#include +#include +#include +#include + +static void virtual_led_set_brightness(struct led_classdev *led_cdev, enum led_brightness brightness) { + pr_info("Luminosité défini sur la LED %s à %d", led_cdev->name, brightness); +} + +static struct led_classdev virtual_led = { + .name = "flo_led", + .brightness = 0, + .max_brightness = 255, + .brightness_set = virtual_led_set_brightness +}; + +static int __init virtual_led_init(void) { + int ret; + pr_info("Chargement du module pour la LED virtuelle"); + + ret = led_classdev_register(NULL, &virtual_led); + if (ret < 0) { + pr_err("Impossible d'ajouter la LED virtuelle"); + return ret; + } + + pr_info("La LED virtuelle est ajouté"); + return 0; +} + +static void __exit virtual_led_exit(void) { + pr_info("Déchargement du module pour la LED virtuelle"); + led_classdev_unregister(&virtual_led); + pr_info("La LED virtuelle est bien retiré"); +} + +module_init(virtual_led_init); +module_exit(virtual_led_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Florian RICHER"); +MODULE_DESCRIPTION("Un module noyau qui ajoute une LED virtuelle"); +MODULE_VERSION("1.0");