From ef2b4716e599b92f5451665cbf4c1d99dfce4ed2 Mon Sep 17 00:00:00 2001 From: mdomlop Date: Thu, 14 Jan 2021 09:46:46 +0100 Subject: [PATCH] Version 0.2 --- ChangeLog | 21 ++++-- INFO | 2 +- Makefile | 2 +- src/rgbtemp.c | 160 ++++++++++++++++++++++++++------------------ src/rgbtemp.service | 1 + 5 files changed, 114 insertions(+), 72 deletions(-) diff --git a/ChangeLog b/ChangeLog index cc4f92e..82dbe55 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,19 @@ -snapman (0.1) unstable; urgency=medium +rgbtemp +======= - * Release 0.1. - + First release. +Release 0.2 +----------- + +By Manuel Wed, 03 Apr 2020 14:34:17 +0200 + +- No hardcoded values for hwmon file. +- Supply such file by RGBTEMP environment variable or by command line. + + +Release 0.1 +----------- + +By Manuel Wed, 03 Apr 2020 14:34:17 +0200 + +- First release. - -- Manuel Domínguez López Wed, 03 Apr 2020 14:34:17 +0200 diff --git a/INFO b/INFO index 3f23fb2..06a2e07 100644 --- a/INFO +++ b/INFO @@ -1,7 +1,7 @@ PROGRAM_NAME=RGB Temperature Monitor EXECUTABLE_NAME=rgbtemp DESCRIPTION=Change RGB colors according to temperature. -VERSION=0.1 +VERSION=0.2 AUTHOR=Manuel Domínguez López SOURCE=https://github.com/mdomlop/rgbtemp LICENSE=GPL-3 diff --git a/Makefile b/Makefile index 3f157cb..874ce02 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ arch_install_services: arch_pkg: $(ARCHPKG) $(ARCHPKG): PKGBUILD ChangeLog - makepkg -d + makepkg -fd @echo @echo Package done! @echo You can install it as root with: diff --git a/src/rgbtemp.c b/src/rgbtemp.c index 547fb57..8ab1ada 100644 --- a/src/rgbtemp.c +++ b/src/rgbtemp.c @@ -2,14 +2,17 @@ #include /* For exit() function */ #include /* For sleep() function */ #include +#include unsigned int sleep(unsigned int seconds); #define FALSE 0 #define TRUE 1 +#define SLEEP 2 /* Sleeping time in seconds */ + #define BLACK "00000000 00000000 00000000" /* off */ -#define WHITE "FFFFFFFF FFFFFFFF FFFFFFFF" /* >2Fº */ +#define WHITE "FFFFFFFF FFFFFFFF FFFFFFFF" /* >20º */ #define CYAN "00000000 FFFFFFFF FFFFFFFF" /* >30º */ #define BLUE "00000000 00000000 FFFFFFFF" /* >40º */ #define GREEN "00000000 FFFFFFFF 00000000" /* >50º */ @@ -18,87 +21,112 @@ unsigned int sleep(unsigned int seconds); #define RED "FFFFFFFF 00000000 00000000" /* >80º */ #define PINK "FFFFFFFF 00000000 FFFFFFFF" /* >90º */ -char fileaddr[] = "/sys/class/hwmon/hwmon0/temp1_input"; +/* #define DEF_PATH "/sys/class/hwmon/hwmon1/temp3_input" */ + int running = TRUE; void set_color(int celsius) { - /* printf("Los grados son: %i\n", celsius); */ - int exitstatus = 0; - if (celsius > 90000) { exitstatus = system("msi-rgb --base-port 4e --pulse " PINK); } - else if (celsius > 80000) { exitstatus = system("msi-rgb --base-port 4e --pulse " RED); } - else if (celsius > 70000) { exitstatus = system("msi-rgb --base-port 4e --pulse " ORANGE); } - else if (celsius > 60000) { exitstatus = system("msi-rgb --base-port 4e --pulse " YELLOW); } - else if (celsius > 50000) { exitstatus = system("msi-rgb --base-port 4e --pulse " GREEN); } - else if (celsius > 40000) { exitstatus = system("msi-rgb --base-port 4e --pulse " BLUE); } - else if (celsius > 30000) { exitstatus = system("msi-rgb --base-port 4e --pulse " CYAN); } - else if (celsius > 20000) { exitstatus = system("msi-rgb --base-port 4e --pulse " WHITE); } - else { exitstatus = system("msi-rgb --base-port 4e --pulse " BLACK); } + /* printf("Los grados son: %i\n", celsius); */ + int exitstatus = 0; + if (celsius > 90000) { exitstatus = system("msi-rgb --base-port 4e --pulse " PINK); } + else if (celsius > 80000) { exitstatus = system("msi-rgb --base-port 4e --pulse " RED); } + else if (celsius > 70000) { exitstatus = system("msi-rgb --base-port 4e --pulse " ORANGE); } + else if (celsius > 60000) { exitstatus = system("msi-rgb --base-port 4e --pulse " YELLOW); } + else if (celsius > 50000) { exitstatus = system("msi-rgb --base-port 4e --pulse " GREEN); } + else if (celsius > 40000) { exitstatus = system("msi-rgb --base-port 4e --pulse " BLUE); } + else if (celsius > 30000) { exitstatus = system("msi-rgb --base-port 4e --pulse " CYAN); } + else if (celsius > 20000) { exitstatus = system("msi-rgb --base-port 4e --pulse " WHITE); } + else { exitstatus = system("msi-rgb --base-port 4e --pulse " BLACK); } - if (exitstatus) running = FALSE; + if (exitstatus) running = FALSE; } void sig_handler(int signo) { - if (signo == SIGUSR1) { - fprintf(stderr, "\nINFO: Received SIGUSR1\n"); - running = FALSE; - } - else if (signo == SIGTERM) { - fprintf(stderr, "\nINFO: Received SIGTERM\n"); - running = FALSE; - } - else if (signo == SIGINT) { - fprintf(stderr, "\nINFO: Received SIGINT\n"); - running = FALSE; - } - else if (signo == SIGKILL) - fprintf(stderr, "\nINFO: Received SIGKILL\n"); - else if (signo == SIGSTOP) - fprintf(stderr, "\nINFO: Received SIGSTOP\n"); - else - fprintf(stderr, "\nINFO: Received: %d", signo); + if (signo == SIGUSR1) { + fprintf(stderr, "\nINFO: Received SIGUSR1\n"); + running = FALSE; + } + else if (signo == SIGTERM) { + fprintf(stderr, "\nINFO: Received SIGTERM\n"); + running = FALSE; + } + else if (signo == SIGINT) { + fprintf(stderr, "\nINFO: Received SIGINT\n"); + running = FALSE; + } + else if (signo == SIGKILL) + fprintf(stderr, "\nINFO: Received SIGKILL\n"); + else if (signo == SIGSTOP) + fprintf(stderr, "\nINFO: Received SIGSTOP\n"); + else + fprintf(stderr, "\nINFO: Received: %d", signo); } -int main() { - int i; - int cleanexit; - int fscanf_ok; - char c[8]; - FILE *fptr; +int main(int argc, char *argv[]) { + int i; + int cleanexit; + int fscanf_ok; + char c[8]; + char fileaddr[255]; - if (signal(SIGUSR1, sig_handler) == SIG_ERR) - fprintf(stderr, "WARNING: Can't catch SIGUSR1\n"); - if (signal(SIGTERM, sig_handler) == SIG_ERR) - fprintf(stderr, "WARNING: Can't catch SIGTERM\n"); - if (signal(SIGINT, sig_handler) == SIG_ERR) - fprintf(stderr, "WARNING: Can't catch SIGINT\n"); - /*if (signal(SIGKILL, sig_handler) == SIG_ERR) - fprintf(stderr, "%s", "WARNING: Can't catch SIGKILL\n"); - if (signal(SIGSTOP, sig_handler) == SIG_ERR) - fprintf(stderr, "%s", "WARNING: Can't catch SIGSTOP\n"); */ + const char* env = getenv("RGBTEMP"); - while (running) { - if ((fptr = fopen(fileaddr, "r")) == NULL) { - fprintf(stderr, "ERROR: Opening file"); - /* Program exits if file pointer returns NULL. */ - exit(1); - } + FILE *fptr; - /* Reads text until newline is encountered */ - fscanf_ok = fscanf(fptr, "%[^\n]", c); - fclose(fptr); + switch (argc) + { + case 1: + if (env != NULL) strcpy(fileaddr, env); + else + { + fprintf(stderr, "RGBTEMP environment variable is empty.\n" + "Please, supply a file in such variable or by command line.\n" + "Exiting.\n"); + exit(2); + } + break; + case 2: + strcpy(fileaddr, argv[1]); + break; + default: + fprintf(stderr, "\nWarning: incorrect number of args: %d.", argc); + break; + } - if (!fscanf_ok) { return 0; } + if (signal(SIGUSR1, sig_handler) == SIG_ERR) + fprintf(stderr, "WARNING: Can't catch SIGUSR1\n"); + if (signal(SIGTERM, sig_handler) == SIG_ERR) + fprintf(stderr, "WARNING: Can't catch SIGTERM\n"); + if (signal(SIGINT, sig_handler) == SIG_ERR) + fprintf(stderr, "WARNING: Can't catch SIGINT\n"); + /*if (signal(SIGKILL, sig_handler) == SIG_ERR) + fprintf(stderr, "%s", "WARNING: Can't catch SIGKILL\n"); + if (signal(SIGSTOP, sig_handler) == SIG_ERR) + fprintf(stderr, "%s", "WARNING: Can't catch SIGSTOP\n"); */ - i = atoi(c); - set_color(i); - sleep(2); - } + while (running) { + if ((fptr = fopen(fileaddr, "r")) == NULL) { + fprintf(stderr, "ERROR: Opening file %s", fileaddr); + /* Program exits if file pointer returns NULL. */ + exit(1); + } - /* system("msi-rgb --disable --base-port 4e " WHITE); */ - cleanexit = system("msi-rgb --base-port 4e " BLACK); /* No pulsing */ + /* Reads text until newline is encountered */ + fscanf_ok = fscanf(fptr, "%[^\n]", c); + fclose(fptr); - if (cleanexit) { return 1; } + if (!fscanf_ok) { return 0; } - return 0; + i = atoi(c); + set_color(i); + sleep(SLEEP); + } + + /* system("msi-rgb --disable --base-port 4e " WHITE); */ + cleanexit = system("msi-rgb --base-port 4e " BLACK); /* No pulsing */ + + if (cleanexit) { return 1; } + + return 0; } diff --git a/src/rgbtemp.service b/src/rgbtemp.service index d70b76d..434e65b 100644 --- a/src/rgbtemp.service +++ b/src/rgbtemp.service @@ -2,6 +2,7 @@ Description=Change RGB colors according to temperature [Service] +Environment=RGBTEMP=/path/to/sys/hwmon/temp_input_file Type=simple ExecStart=rgbtemp KillMode=process