wmgtemp: Add NetBSD/envsys support, drop Linux/lm_sensors
This commit is contained in:
parent
1b475f8666
commit
59ed1f8afd
|
@ -1,3 +1,9 @@
|
|||
2020-06-13 Snow Flurry <snow@datagirl.xyz>
|
||||
|
||||
* ChangeLog, configure.ac, Makefile.am, src/envsys.c, src/envsys.h,
|
||||
src/wmgtemp.c: Remove everything that makes this work on Linux.
|
||||
This now works with NetBSD using envsys/proplib.
|
||||
|
||||
2017-02-01 Doug Torrance <dtorrance@piedmont.edu>
|
||||
|
||||
* CREDITS, ChangeLog, README, configure.ac: Bump to version 1.2.
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
bin_PROGRAMS = wmgtemp
|
||||
wmgtemp_SOURCES = src/wmgtemp.c src/wmgtemp-interface-mask.xbm \
|
||||
src/wmgtemp-interface.xpm
|
||||
src/wmgtemp-interface.xpm src/envsys.c
|
||||
dist_man_MANS = wmgtemp.1
|
||||
|
||||
AM_CFLAGS = $(X11_CFLAGS) $(dockapp_CFLAGS)
|
||||
LIBS += $(X11_LIBS) $(dockapp_LIBS)
|
||||
AM_CFLAGS = $(X11_CFLAGS) $(dockapp_CFLAGS) -I/usr/pkg/include
|
||||
LIBS += $(X11_LIBS) $(dockapp_LIBS) -lprop -L/usr/pkg/lib -Wl,-R/usr/pkg/lib
|
||||
|
||||
EXTRA_DIST = Artistic BUGS CREDITS examples/wmgtemprc
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
AC_INIT([wmgtemp], [1.2], [wmaker-dev@googlegroups.com])
|
||||
AC_INIT([wmgtemp], [1.4], [wmaker-dev@googlegroups.com])
|
||||
AM_INIT_AUTOMAKE([foreign subdir-objects])
|
||||
AC_CONFIG_SRCDIR([configure.ac])
|
||||
AC_PROG_CC
|
||||
AC_CHECK_LIB([sensors],[sensors_get_features])
|
||||
PKG_CHECK_MODULES([X11],[x11])
|
||||
AC_CHECK_LIB([prop],[prop_bool_create])
|
||||
PKG_CHECK_MODULES([dockapp],[dockapp])
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_OUTPUT
|
||||
|
|
|
@ -10,16 +10,16 @@
|
|||
#include <X11/Xlib.h>
|
||||
#include <X11/xpm.h>
|
||||
#include <X11/extensions/shape.h>
|
||||
#include <sensors/sensors.h>
|
||||
#include <sensors/error.h>
|
||||
#include <libdockapp/wmgeneral.h>
|
||||
#include <libdockapp/misc.h>
|
||||
#include "wmgtemp-interface.xpm"
|
||||
#include "wmgtemp-interface-mask.xbm"
|
||||
#include <math.h>
|
||||
#include <signal.h>
|
||||
#include <getopt.h>
|
||||
|
||||
#include "wmgtemp-interface.xpm"
|
||||
#include "wmgtemp-interface-mask.xbm"
|
||||
#include "envsys.h"
|
||||
|
||||
/* Defines */
|
||||
#define BitOff(a,x) ((void)((a) &= ~(1 << (x))))
|
||||
#define BitOn(a,x) ((void)((a) |= (1 << (x))))
|
||||
|
@ -51,15 +51,14 @@
|
|||
|
||||
#define DEBUG 0 /* 0 disable 1 enable */
|
||||
|
||||
#define OPT_STRING "g:sS:hH:w:m:M:a:e:u:1:2:c:tq"
|
||||
#define OPT_STRING "g:sS:hH:w:m:M:a:e:u:1:2:tq"
|
||||
|
||||
#define TEMPTOFAHRENHEIT(t) ((int)((t * (1.8) + 32)))
|
||||
#define TEMPTOKELVIN(t) ((int)(t + 273))
|
||||
#define TEMPTOCELCIUS(t) (t)
|
||||
#define TEMPTOFAHRENHEIT(t) ((int)((t * (9.0 / 5.0) - 459.67)))
|
||||
#define TEMPTOKELVIN(t) ((int)t)
|
||||
#define TEMPTOCELCIUS(t) ((int)(t - 273.15))
|
||||
#define TEMPTODISPLAYSCALE(temp, display_flags) (IsOn((display_flags), TSCALE_CELCIUS) ? TEMPTOCELCIUS((temp)) : (IsOn((display_flags), TSCALE_KELVIN) ? TEMPTOKELVIN((temp)) : TEMPTOFAHRENHEIT((temp))))
|
||||
|
||||
/* Prototypes */
|
||||
int init_sensors();
|
||||
int process_config(int argc, char **argv);
|
||||
int recompute_range(double cpu_high, double cpu_low, double sys_high, double sys_low);
|
||||
void display_usage();
|
||||
|
@ -82,7 +81,6 @@ void cycle_temptype();
|
|||
|
||||
/* Globals */
|
||||
int delay = 1;
|
||||
const sensors_chip_name *name;
|
||||
char *exec_app = NULL;
|
||||
char *rc_config = NULL;
|
||||
|
||||
|
@ -110,8 +108,10 @@ double execat = 0;
|
|||
short execed = 0;
|
||||
short swap_types = 0;
|
||||
|
||||
char *sensor_feature1 = "temp1";
|
||||
char *sensor_feature2 = "temp2";
|
||||
const char *cpu_sensor_name = "coretemp0";
|
||||
const char *sys_sensor_name = "thinkpad0";
|
||||
char *sys_stat_name = NULL;
|
||||
char *cpu_stat_name = NULL;
|
||||
char *sensor_chip = NULL;
|
||||
|
||||
short quiet = 0;
|
||||
|
@ -121,58 +121,30 @@ int main(int argc, char **argv) {
|
|||
int i = 0;
|
||||
int tmp_swap;
|
||||
|
||||
const sensors_feature* feature = NULL;
|
||||
const sensors_subfeature* subfeature_cpu = NULL;
|
||||
const sensors_subfeature* subfeature_sys = NULL;
|
||||
short chip_found = -1;
|
||||
|
||||
BitOn(SENSOR_DISP, WARN_NONE);
|
||||
BitOn(SENSOR_DISP, TSCALE_CELCIUS);
|
||||
BitOn(SENSOR_DISP, GRAPH_LINE);
|
||||
|
||||
/* *conffname = "/etc/sensors3.conf"; */
|
||||
|
||||
if(!process_config(argc, argv)) {
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
if(!init_sensors()) {
|
||||
exit(-1);
|
||||
}
|
||||
/* get cpu and sys stat names */
|
||||
cpu_stat_name = get_temp_stat_name(cpu_sensor_name);
|
||||
sys_stat_name = get_temp_stat_name(sys_sensor_name);
|
||||
BitOn(SENSOR_DISP, SYS);
|
||||
BitOn(SENSOR_DISP, CPU);
|
||||
|
||||
/* Get the chip name */
|
||||
name = sensors_get_detected_chips(NULL, &chip_nr);
|
||||
while(name != NULL && chip_found == -1) {
|
||||
if (!sensor_chip || strcmp(name->prefix, (const char *)sensor_chip) == 0) {
|
||||
i = 0;
|
||||
while ((feature = sensors_get_features(name, &i))) {
|
||||
if(strcmp(feature->name, (const char *)sensor_feature1) == 0) {
|
||||
subfeature_cpu = sensors_get_subfeature(name, feature, SENSORS_SUBFEATURE_TEMP_INPUT);
|
||||
SUBFEAT_NUM_CPU = subfeature_cpu->number;
|
||||
BitOn(SENSOR_DISP, CPU);
|
||||
chip_found = 1;
|
||||
}
|
||||
if(strcmp(feature->name, (const char *)sensor_feature2) == 0) {
|
||||
subfeature_sys = sensors_get_subfeature(name, feature, SENSORS_SUBFEATURE_TEMP_INPUT);
|
||||
SUBFEAT_NUM_SYS = subfeature_sys->number;
|
||||
BitOn(SENSOR_DISP, SYS);
|
||||
chip_found = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(chip_found == -1) {
|
||||
name = sensors_get_detected_chips(NULL, &chip_nr);
|
||||
}
|
||||
}
|
||||
if(chip_found == -1) {
|
||||
if(cpu_stat_name == NULL || sys_stat_name == NULL) {
|
||||
fprintf(stderr,"wmgtemp: Unable to find temperature sensing feature.\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/* output the name of the sensor if found. */
|
||||
if(quiet == 0)
|
||||
printf("wmgtemp: Primary Sensor - %s on %s\n", name->prefix, sensors_get_adapter_name(&name->bus));
|
||||
if (quiet == 0)
|
||||
printf("wmgtemp: cputemp is %s.%s, systemp is %s.%s\n", cpu_sensor_name,
|
||||
cpu_stat_name,
|
||||
sys_sensor_name,
|
||||
sys_stat_name);
|
||||
|
||||
if(swap_types) {
|
||||
if(quiet == 0)
|
||||
|
@ -430,8 +402,8 @@ void update_sensor_data() {
|
|||
}
|
||||
|
||||
// Read the new values from the sensors into the temperature arrays.
|
||||
if(IsOn(SENSOR_DISP, SYS)) sensors_get_value(name, SUBFEAT_NUM_SYS, &sys_history[58]);
|
||||
if(IsOn(SENSOR_DISP, CPU)) sensors_get_value(name, SUBFEAT_NUM_CPU, &cpu_history[58]);
|
||||
if(IsOn(SENSOR_DISP, SYS)) sys_history[58] = get_stat_int(sys_sensor_name, sys_stat_name) / 1000000.0;
|
||||
if(IsOn(SENSOR_DISP, CPU)) cpu_history[58] = get_stat_int(cpu_sensor_name, cpu_stat_name) / 1000000.0;
|
||||
|
||||
// Update the run high/low values.
|
||||
if(cpu_high > run_cpu_high)
|
||||
|
@ -655,40 +627,10 @@ void draw_range_line(double temp, double range, short type) {
|
|||
}
|
||||
|
||||
|
||||
int init_sensors() {
|
||||
FILE *config_file;
|
||||
int res;
|
||||
|
||||
if (rc_config) {
|
||||
config_file = fopen(rc_config, "r");
|
||||
|
||||
if(config_file == NULL) {
|
||||
fprintf(stderr, "Error opening %s\n", rc_config);
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
config_file = NULL; /* Use libsensors default */
|
||||
}
|
||||
|
||||
res = sensors_init(config_file);
|
||||
|
||||
if(res != 0) {
|
||||
fprintf(stderr,"Error initializing sensors: %s\n", sensors_strerror(res));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(config_file && fclose(config_file))
|
||||
perror("Error closing sensors config");
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void display_usage() {
|
||||
printf("wmgtemp v"PACKAGE_VERSION"\n" \
|
||||
"Usage: wmgtemp [options]\n" \
|
||||
"Options:\n" \
|
||||
" -S, --sensorconf=PATH Specify sensors config file PATH\n" \
|
||||
" [Default: autodetect]\n" \
|
||||
" -s, --scale=SCALE Display temperatures in SCALE\n" \
|
||||
" SCALE=kelvin, fahrenheit\n" \
|
||||
" [Default: celcius]\n" \
|
||||
|
@ -706,11 +648,9 @@ void display_usage() {
|
|||
" -M, --max=TEMP Set upper bound of the graph to TEMP degrees celcius\n" \
|
||||
" [Default: 35]\n" \
|
||||
" -1, --feature1=F1 Set the feature for CPU\n" \
|
||||
" [Default: temp1]\n" \
|
||||
" [Default: coretemp0]\n" \
|
||||
" -2, --feature2=F2 Set the feature for SYS\n" \
|
||||
" [Default: temp2]\n" \
|
||||
" -c, --chip=NAME Use sensor chip matching NAME\n" \
|
||||
" [Default: use any]\n" \
|
||||
" [Default: thinkpad0]\n" \
|
||||
" -a, --execat=TEMP Execute a command at TEMP degrees celcius\n" \
|
||||
" -e, --exec=COMMAND Execute COMMAND when 'execat' temperature is reached\n" \
|
||||
" -t, --swap Swap CPU and SYS temps\n" \
|
||||
|
@ -827,7 +767,6 @@ int process_config(int argc, char **argv) {
|
|||
char *rc_feature1 = NULL;
|
||||
char *rc_feature2 = NULL;
|
||||
char *rc_quiet = NULL;
|
||||
char *rc_chip = NULL;
|
||||
short parse_ok = 1;
|
||||
int opt_index;
|
||||
int opt;
|
||||
|
@ -848,7 +787,6 @@ int process_config(int argc, char **argv) {
|
|||
{ "quiet", &rc_quiet },
|
||||
{ "feature1", &rc_feature1 },
|
||||
{ "feature2", &rc_feature2 },
|
||||
{ "chip", &rc_chip },
|
||||
{ "sensorconf", &rc_config },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
@ -914,9 +852,6 @@ int process_config(int argc, char **argv) {
|
|||
case '2':
|
||||
rc_feature2 = strdup(optarg);
|
||||
break;
|
||||
case 'c':
|
||||
rc_chip = strdup(optarg);
|
||||
break;
|
||||
case 'S':
|
||||
rc_config = strdup(optarg);
|
||||
break;
|
||||
|
@ -942,13 +877,10 @@ int process_config(int argc, char **argv) {
|
|||
}
|
||||
|
||||
if(rc_feature1 != NULL) {
|
||||
sensor_feature1 = strdup(rc_feature1);
|
||||
cpu_sensor_name = strdup(rc_feature1);
|
||||
}
|
||||
if(rc_feature2 != NULL) {
|
||||
sensor_feature2 = strdup(rc_feature2);
|
||||
}
|
||||
if(rc_chip != NULL) {
|
||||
sensor_chip = strdup(rc_chip);
|
||||
sys_sensor_name = strdup(rc_feature2);
|
||||
}
|
||||
|
||||
if(rc_graph != NULL) {
|
||||
|
|
Loading…
Reference in a new issue