diff --git a/doc/libsensors-API.txt b/doc/libsensors-API.txt index 41794c4a..1d00924b 100644 --- a/doc/libsensors-API.txt +++ b/doc/libsensors-API.txt @@ -16,6 +16,9 @@ SVN HEAD enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_AVERAGE enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_LOWEST enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_HIGHEST + enum sensors_subfeature_type SENSORS_SUBFEATURE_FAN_MAX + enum sensors_subfeature_type SENSORS_SUBFEATURE_FAN_MIN_ALARM + enum sensors_subfeature_type SENSORS_SUBFEATURE_FAN_MAX_ALARM 0x431 lm-sensors 3.3.0 to 3.3.1 * Added support for intrusion detection enum sensors_feature_type SENSORS_FEATURE_INTRUSION diff --git a/lib/sensors.h b/lib/sensors.h index 6d947842..df91d243 100644 --- a/lib/sensors.h +++ b/lib/sensors.h @@ -169,11 +169,14 @@ typedef enum sensors_subfeature_type { SENSORS_SUBFEATURE_FAN_INPUT = SENSORS_FEATURE_FAN << 8, SENSORS_SUBFEATURE_FAN_MIN, + SENSORS_SUBFEATURE_FAN_MAX, SENSORS_SUBFEATURE_FAN_ALARM = (SENSORS_FEATURE_FAN << 8) | 0x80, SENSORS_SUBFEATURE_FAN_FAULT, SENSORS_SUBFEATURE_FAN_DIV, SENSORS_SUBFEATURE_FAN_BEEP, SENSORS_SUBFEATURE_FAN_PULSES, + SENSORS_SUBFEATURE_FAN_MIN_ALARM, + SENSORS_SUBFEATURE_FAN_MAX_ALARM, SENSORS_SUBFEATURE_TEMP_INPUT = SENSORS_FEATURE_TEMP << 8, SENSORS_SUBFEATURE_TEMP_MAX, diff --git a/lib/sysfs.c b/lib/sysfs.c index 9068a71a..1a8091f8 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -271,9 +271,12 @@ static const struct subfeature_type_match in_matches[] = { static const struct subfeature_type_match fan_matches[] = { { "input", SENSORS_SUBFEATURE_FAN_INPUT }, { "min", SENSORS_SUBFEATURE_FAN_MIN }, + { "max", SENSORS_SUBFEATURE_FAN_MAX }, { "div", SENSORS_SUBFEATURE_FAN_DIV }, { "pulses", SENSORS_SUBFEATURE_FAN_PULSES }, { "alarm", SENSORS_SUBFEATURE_FAN_ALARM }, + { "min_alarm", SENSORS_SUBFEATURE_FAN_MIN_ALARM }, + { "max_alarm", SENSORS_SUBFEATURE_FAN_MAX_ALARM }, { "fault", SENSORS_SUBFEATURE_FAN_FAULT }, { "beep", SENSORS_SUBFEATURE_FAN_BEEP }, { NULL, 0 } diff --git a/prog/sensors/chips.c b/prog/sensors/chips.c index 677a6178..c6ced71d 100644 --- a/prog/sensors/chips.c +++ b/prog/sensors/chips.c @@ -408,7 +408,7 @@ static void print_chip_fan(const sensors_chip_name *name, const sensors_feature *feature, int label_size) { - const sensors_subfeature *sf, *sfmin, *sfdiv; + const sensors_subfeature *sf, *sfmin, *sfmax, *sfdiv; double val; char *label; @@ -435,24 +435,36 @@ static void print_chip_fan(const sensors_chip_name *name, sfmin = sensors_get_subfeature(name, feature, SENSORS_SUBFEATURE_FAN_MIN); + sfmax = sensors_get_subfeature(name, feature, + SENSORS_SUBFEATURE_FAN_MAX); sfdiv = sensors_get_subfeature(name, feature, SENSORS_SUBFEATURE_FAN_DIV); - if (sfmin && sfdiv) - printf(" (min = %4.0f RPM, div = %1.0f)", - get_value(name, sfmin), - get_value(name, sfdiv)); - else if (sfmin) - printf(" (min = %4.0f RPM)", - get_value(name, sfmin)); - else if (sfdiv) - printf(" (div = %1.0f)", - get_value(name, sfdiv)); + if (sfmin || sfmax || sfdiv) { + printf(" ("); + if (sfmin) + printf("min = %4.0f RPM", + get_value(name, sfmin)); + if (sfmax) + printf("%smax = %4.0f RPM", + sfmin ? ", " : "", + get_value(name, sfmax)); + if (sfdiv) + printf("%sdiv = %1.0f", + (sfmin || sfmax) ? ", " : "", + get_value(name, sfdiv)); + printf(")"); + } sf = sensors_get_subfeature(name, feature, SENSORS_SUBFEATURE_FAN_ALARM); - if (sf && get_value(name, sf)) { + sfmin = sensors_get_subfeature(name, feature, + SENSORS_SUBFEATURE_FAN_MIN_ALARM); + sfmax = sensors_get_subfeature(name, feature, + SENSORS_SUBFEATURE_FAN_MAX_ALARM); + if ((sf && get_value(name, sf)) || + (sfmin && get_value(name, sfmin)) || + (sfmax && get_value(name, sfmax))) printf(" ALARM"); - } printf("\n"); }