root/tools/leds/uledmon.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. main

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * uledmon.c
   4  *
   5  * This program creates a new userspace LED class device and monitors it. A
   6  * timestamp and brightness value is printed each time the brightness changes.
   7  *
   8  * Usage: uledmon <device-name>
   9  *
  10  * <device-name> is the name of the LED class device to be created. Pressing
  11  * CTRL+C will exit.
  12  */
  13 
  14 #include <fcntl.h>
  15 #include <stdio.h>
  16 #include <string.h>
  17 #include <time.h>
  18 #include <unistd.h>
  19 
  20 #include <linux/uleds.h>
  21 
  22 int main(int argc, char const *argv[])
  23 {
  24         struct uleds_user_dev uleds_dev;
  25         int fd, ret;
  26         int brightness;
  27         struct timespec ts;
  28 
  29         if (argc != 2) {
  30                 fprintf(stderr, "Requires <device-name> argument\n");
  31                 return 1;
  32         }
  33 
  34         strncpy(uleds_dev.name, argv[1], LED_MAX_NAME_SIZE);
  35         uleds_dev.max_brightness = 100;
  36 
  37         fd = open("/dev/uleds", O_RDWR);
  38         if (fd == -1) {
  39                 perror("Failed to open /dev/uleds");
  40                 return 1;
  41         }
  42 
  43         ret = write(fd, &uleds_dev, sizeof(uleds_dev));
  44         if (ret == -1) {
  45                 perror("Failed to write to /dev/uleds");
  46                 close(fd);
  47                 return 1;
  48         }
  49 
  50         while (1) {
  51                 ret = read(fd, &brightness, sizeof(brightness));
  52                 if (ret == -1) {
  53                         perror("Failed to read from /dev/uleds");
  54                         close(fd);
  55                         return 1;
  56                 }
  57                 clock_gettime(CLOCK_MONOTONIC, &ts);
  58                 printf("[%ld.%09ld] %u\n", ts.tv_sec, ts.tv_nsec, brightness);
  59         }
  60 
  61         close(fd);
  62 
  63         return 0;
  64 }

/* [<][>][^][v][top][bottom][index][help] */