diff --git a/src/daemon.c b/src/daemon.c index 8f110a9..07e3271 100755 --- a/src/daemon.c +++ b/src/daemon.c @@ -79,6 +79,7 @@ void signal_handler(int signal) syslog(LOG_WARNING, "Received SIGTERM signal."); delete_pid(); //TODO: free resources + set_fans_auto(fans); exit(EXIT_SUCCESS); break; @@ -86,12 +87,14 @@ void signal_handler(int signal) syslog(LOG_WARNING, "Received SIGINT signal."); delete_pid(); //TODO: free resources + set_fans_auto(fans); exit(EXIT_SUCCESS); case SIGSTOP: syslog(LOG_WARNING, "Received SIGSTOP signal."); delete_pid(); //TODO: free resources + set_fans_auto(fans); exit(EXIT_SUCCESS); default: diff --git a/src/global.h b/src/global.h index 472bad3..9b64acf 100644 --- a/src/global.h +++ b/src/global.h @@ -23,5 +23,7 @@ struct s_fans { typedef struct s_sensors t_sensors; typedef struct s_fans t_fans; +extern t_sensors* sensors; +extern t_fans* fans; #endif \ No newline at end of file diff --git a/src/mbpfan.c b/src/mbpfan.c index f2706db..5ddffb3 100755 --- a/src/mbpfan.c +++ b/src/mbpfan.c @@ -59,8 +59,9 @@ int max_temp = 86; // do not set it > 90 int polling_interval = 7; -typedef struct s_sensors t_sensors; -typedef struct s_fans t_fans; +t_sensors* sensors = NULL; +t_fans* fans = NULL; + bool is_legacy_kernel() { @@ -243,7 +244,7 @@ t_fans *retrieve_fans() int counter = 0; int fans_found = 0; - for(int counter = 0; counter<10; counter++) { + for(counter = 0; counter<10; counter++) { path_output = (char*) malloc(sizeof( char ) * path_min_size); path_output[0] = '\0'; @@ -313,7 +314,7 @@ t_fans *retrieve_fans() } -void set_fans_man(t_fans *fans) +static void set_fans_mode(t_fans *fans, int mode) { t_fans *tmp = fans; @@ -323,7 +324,7 @@ void set_fans_man(t_fans *fans) file = fopen(tmp->fan_manual_path, "rw+"); if(file != NULL) { - fprintf(file, "%d", 1); + fprintf(file, "%d", mode); fclose(file); } @@ -331,6 +332,18 @@ void set_fans_man(t_fans *fans) } } +void set_fans_man(t_fans *fans) +{ + + set_fans_mode(fans, 1); +} + +void set_fans_auto(t_fans *fans) +{ + + set_fans_mode(fans, 0); +} + t_sensors *refresh_sensors(t_sensors *sensors) { @@ -488,8 +501,8 @@ void mbpfan() retrieve_settings(NULL); - t_sensors* sensors = retrieve_sensors(); - t_fans* fans = retrieve_fans(); + sensors = retrieve_sensors(); + fans = retrieve_fans(); set_fans_man(fans); new_temp = get_temp(sensors); diff --git a/src/mbpfan.h b/src/mbpfan.h index c9ed069..d6250fa 100644 --- a/src/mbpfan.h +++ b/src/mbpfan.h @@ -79,6 +79,12 @@ t_fans* retrieve_fans(); */ void set_fans_man(t_fans *fans); +/** + * Given a list of sensors with associated fans + * Set them to automatic control + */ +void set_fans_auto(t_fans *fans); + /** * Given a list of sensors with associated fans * Change their speed