From bfe337fe76aa796fae800b5c3f53b9b483d0efaf Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Sun, 23 Sep 2007 12:02:59 +0000 Subject: [PATCH] Store current temperature, voltage and fan values together with the rest of the subfeatures. This makes the code more simple, and prepares for current values to be subfeatures like any others (i.e. they can be missing.) git-svn-id: http://lm-sensors.org/svn/lm-sensors/branches/lm-sensors-3.0.0@4833 7894878c-1315-0410-8ee3-d5d059ff63e0 --- prog/sensord/chips.c | 41 ++++++++++++++++++---------------- prog/sensors/chips.c | 53 ++++++++++++++++---------------------------- 2 files changed, 41 insertions(+), 53 deletions(-) diff --git a/prog/sensord/chips.c b/prog/sensord/chips.c index 79258490..85317fdb 100644 --- a/prog/sensord/chips.c +++ b/prog/sensord/chips.c @@ -152,7 +152,7 @@ static void getAvailableFeatures (const sensors_chip_name *name, while ((iter = sensors_get_all_subfeatures(name, feature->number, &i))) { int index0; - index0 = iter->type - first_val - 1; + index0 = iter->type - first_val; if (index0 < 0 || index0 >= size) /* New feature in libsensors? Ignore. */ continue; @@ -162,24 +162,25 @@ static void getAvailableFeatures (const sensors_chip_name *name, } } -#define IN_FEATURE(x) has_features[x - SENSORS_FEATURE_IN - 1] -#define IN_FEATURE_NR(x) feature_nrs[x - SENSORS_FEATURE_IN - 1] +#define IN_FEATURE(x) has_features[x - SENSORS_FEATURE_IN] +#define IN_FEATURE_NR(x) feature_nrs[x - SENSORS_FEATURE_IN] static void fillChipVoltage (FeatureDescriptor *voltage, const sensors_chip_name *name, const sensors_subfeature *feature) { - const int size = SENSORS_FEATURE_IN_BEEP - SENSORS_FEATURE_IN; - short has_features[SENSORS_FEATURE_IN_BEEP - SENSORS_FEATURE_IN] = { 0, }; - int feature_nrs[SENSORS_FEATURE_IN_BEEP - SENSORS_FEATURE_IN]; + const int size = SENSORS_FEATURE_IN_BEEP - SENSORS_FEATURE_IN + 1; + short has_features[SENSORS_FEATURE_IN_BEEP - SENSORS_FEATURE_IN + 1] = { 0, }; + int feature_nrs[SENSORS_FEATURE_IN_BEEP - SENSORS_FEATURE_IN + 1]; int pos = 0; voltage->rrd = rrdF2; voltage->type = DataType_voltage; - voltage->dataNumbers[pos++] = feature->number; getAvailableFeatures (name, feature, has_features, feature_nrs, size, SENSORS_FEATURE_IN); + voltage->dataNumbers[pos++] = IN_FEATURE_NR(SENSORS_FEATURE_IN); + if (IN_FEATURE(SENSORS_FEATURE_IN_MIN) && IN_FEATURE(SENSORS_FEATURE_IN_MAX)) { voltage->format = fmtVolts_2; @@ -210,24 +211,25 @@ static void fillChipVoltage (FeatureDescriptor *voltage, } } -#define TEMP_FEATURE(x) has_features[x - SENSORS_FEATURE_TEMP - 1] -#define TEMP_FEATURE_NR(x) feature_nrs[x - SENSORS_FEATURE_TEMP - 1] +#define TEMP_FEATURE(x) has_features[x - SENSORS_FEATURE_TEMP] +#define TEMP_FEATURE_NR(x) feature_nrs[x - SENSORS_FEATURE_TEMP] static void fillChipTemperature (FeatureDescriptor *temperature, const sensors_chip_name *name, const sensors_subfeature *feature) { - const int size = SENSORS_FEATURE_TEMP_BEEP - SENSORS_FEATURE_TEMP; - short has_features[SENSORS_FEATURE_TEMP_BEEP - SENSORS_FEATURE_TEMP] = { 0, }; - int feature_nrs[SENSORS_FEATURE_TEMP_BEEP - SENSORS_FEATURE_TEMP]; + const int size = SENSORS_FEATURE_TEMP_BEEP - SENSORS_FEATURE_TEMP + 1; + short has_features[SENSORS_FEATURE_TEMP_BEEP - SENSORS_FEATURE_TEMP + 1] = { 0, }; + int feature_nrs[SENSORS_FEATURE_TEMP_BEEP - SENSORS_FEATURE_TEMP + 1]; int pos = 0; temperature->rrd = rrdF1; temperature->type = DataType_temperature; - temperature->dataNumbers[pos++] = feature->number; getAvailableFeatures (name, feature, has_features, feature_nrs, size, SENSORS_FEATURE_TEMP); + temperature->dataNumbers[pos++] = TEMP_FEATURE_NR(SENSORS_FEATURE_TEMP); + if (TEMP_FEATURE(SENSORS_FEATURE_TEMP_MIN) && TEMP_FEATURE(SENSORS_FEATURE_TEMP_MAX)) { temperature->format = fmtTemps_minmax_1; @@ -261,24 +263,25 @@ static void fillChipTemperature (FeatureDescriptor *temperature, } } -#define FAN_FEATURE(x) has_features[x - SENSORS_FEATURE_FAN - 1] -#define FAN_FEATURE_NR(x) feature_nrs[x - SENSORS_FEATURE_FAN - 1] +#define FAN_FEATURE(x) has_features[x - SENSORS_FEATURE_FAN] +#define FAN_FEATURE_NR(x) feature_nrs[x - SENSORS_FEATURE_FAN] static void fillChipFan (FeatureDescriptor *fan, const sensors_chip_name *name, const sensors_subfeature *feature) { - const int size = SENSORS_FEATURE_FAN_BEEP - SENSORS_FEATURE_FAN; - short has_features[SENSORS_FEATURE_FAN_BEEP - SENSORS_FEATURE_FAN] = { 0, }; - int feature_nrs[SENSORS_FEATURE_FAN_BEEP - SENSORS_FEATURE_FAN]; + const int size = SENSORS_FEATURE_FAN_BEEP - SENSORS_FEATURE_FAN + 1; + short has_features[SENSORS_FEATURE_FAN_BEEP - SENSORS_FEATURE_FAN + 1] = { 0, }; + int feature_nrs[SENSORS_FEATURE_FAN_BEEP - SENSORS_FEATURE_FAN + 1]; int pos = 0; fan->rrd = rrdF0; fan->type = DataType_rpm; - fan->dataNumbers[pos++] = feature->number; getAvailableFeatures (name, feature, has_features, feature_nrs, size, SENSORS_FEATURE_FAN); + fan->dataNumbers[pos++] = FAN_FEATURE_NR(SENSORS_FEATURE_FAN); + if (FAN_FEATURE(SENSORS_FEATURE_FAN_MIN)) { fan->dataNumbers[pos++] = FAN_FEATURE_NR(SENSORS_FEATURE_FAN_MIN); if (FAN_FEATURE(SENSORS_FEATURE_FAN_DIV)) { diff --git a/prog/sensors/chips.c b/prog/sensors/chips.c index 6f0be8d4..3c4c0e0f 100644 --- a/prog/sensors/chips.c +++ b/prog/sensors/chips.c @@ -84,7 +84,7 @@ static void sensors_get_available_features(const sensors_chip_name *name, while ((iter = sensors_get_all_subfeatures(name, feature->number, &i))) { int indx, err; - indx = iter->type - first_val - 1; + indx = iter->type - first_val; if (indx < 0 || indx >= size) /* New feature in libsensors? Ignore. */ continue; @@ -140,8 +140,8 @@ static void print_temp_limits(double limit1, double limit2, printf("ALARM "); } -#define TEMP_FEATURE(x) has_features[x - SENSORS_FEATURE_TEMP - 1] -#define TEMP_FEATURE_VAL(x) feature_vals[x - SENSORS_FEATURE_TEMP - 1] +#define TEMP_FEATURE(x) has_features[x - SENSORS_FEATURE_TEMP] +#define TEMP_FEATURE_VAL(x) feature_vals[x - SENSORS_FEATURE_TEMP] static void print_chip_temp(const sensors_chip_name *name, const sensors_subfeature *feature, int label_size) @@ -150,24 +150,19 @@ static void print_chip_temp(const sensors_chip_name *name, const char *s1, *s2; int alarm, crit_displayed = 0; char *label; - const int size = SENSORS_FEATURE_TEMP_TYPE - SENSORS_FEATURE_TEMP; - short has_features[SENSORS_FEATURE_TEMP_TYPE - SENSORS_FEATURE_TEMP] = { 0, }; - double feature_vals[SENSORS_FEATURE_TEMP_TYPE - SENSORS_FEATURE_TEMP] = { 0.0, }; + const int size = SENSORS_FEATURE_TEMP_TYPE - SENSORS_FEATURE_TEMP + 1; + short has_features[SENSORS_FEATURE_TEMP_TYPE - SENSORS_FEATURE_TEMP + 1] = { 0, }; + double feature_vals[SENSORS_FEATURE_TEMP_TYPE - SENSORS_FEATURE_TEMP + 1] = { 0.0, }; if (!(label = sensors_get_label(name, feature->number))) { printf("ERROR: Can't get temperature label!\n"); return; } - if (sensors_get_value(name, feature->number, &val)) { - printf("ERROR: Can't get %s data!\n", label); - free(label); - return; - } - sensors_get_available_features(name, feature, has_features, feature_vals, size, SENSORS_FEATURE_TEMP); + val = TEMP_FEATURE_VAL(SENSORS_FEATURE_TEMP); alarm = TEMP_FEATURE(SENSORS_FEATURE_TEMP_ALARM) && TEMP_FEATURE_VAL(SENSORS_FEATURE_TEMP_ALARM); @@ -278,15 +273,15 @@ static void print_chip_temp(const sensors_chip_name *name, printf("\n"); } -#define IN_FEATURE(x) has_features[x - SENSORS_FEATURE_IN - 1] -#define IN_FEATURE_VAL(x) feature_vals[x - SENSORS_FEATURE_IN - 1] +#define IN_FEATURE(x) has_features[x - SENSORS_FEATURE_IN] +#define IN_FEATURE_VAL(x) feature_vals[x - SENSORS_FEATURE_IN] static void print_chip_in(const sensors_chip_name *name, const sensors_subfeature *feature, int label_size) { - const int size = SENSORS_FEATURE_IN_MAX_ALARM - SENSORS_FEATURE_IN; - short has_features[SENSORS_FEATURE_IN_MAX_ALARM - SENSORS_FEATURE_IN] = { 0, }; - double feature_vals[SENSORS_FEATURE_IN_MAX_ALARM - SENSORS_FEATURE_IN] = { 0.0, }; + const int size = SENSORS_FEATURE_IN_MAX_ALARM - SENSORS_FEATURE_IN + 1; + short has_features[SENSORS_FEATURE_IN_MAX_ALARM - SENSORS_FEATURE_IN + 1] = { 0, }; + double feature_vals[SENSORS_FEATURE_IN_MAX_ALARM - SENSORS_FEATURE_IN + 1] = { 0.0, }; double val, alarm_max, alarm_min; char *label; @@ -295,14 +290,9 @@ static void print_chip_in(const sensors_chip_name *name, return; } - if (sensors_get_value(name, feature->number, &val)) { - printf("ERROR: Can't get %s data!\n", label); - free(label); - return; - } - sensors_get_available_features(name, feature, has_features, feature_vals, size, SENSORS_FEATURE_IN); + val = IN_FEATURE_VAL(SENSORS_FEATURE_IN); print_label(label, label_size); free(label); @@ -343,16 +333,16 @@ static void print_chip_in(const sensors_chip_name *name, printf("\n"); } -#define FAN_FEATURE(x) has_features[x - SENSORS_FEATURE_FAN - 1] -#define FAN_FEATURE_VAL(x) feature_vals[x - SENSORS_FEATURE_FAN - 1] +#define FAN_FEATURE(x) has_features[x - SENSORS_FEATURE_FAN] +#define FAN_FEATURE_VAL(x) feature_vals[x - SENSORS_FEATURE_FAN] static void print_chip_fan(const sensors_chip_name *name, const sensors_subfeature *feature, int label_size) { char *label; - const int size = SENSORS_FEATURE_FAN_DIV - SENSORS_FEATURE_FAN; - short has_features[SENSORS_FEATURE_FAN_DIV - SENSORS_FEATURE_FAN] = { 0, }; - double feature_vals[SENSORS_FEATURE_FAN_DIV - SENSORS_FEATURE_FAN] = { 0.0, }; + const int size = SENSORS_FEATURE_FAN_DIV - SENSORS_FEATURE_FAN + 1; + short has_features[SENSORS_FEATURE_FAN_DIV - SENSORS_FEATURE_FAN + 1] = { 0, }; + double feature_vals[SENSORS_FEATURE_FAN_DIV - SENSORS_FEATURE_FAN + 1] = { 0.0, }; double val; if (!(label = sensors_get_label(name, feature->number))) { @@ -360,17 +350,12 @@ static void print_chip_fan(const sensors_chip_name *name, return; } - if (sensors_get_value(name, feature->number, &val)) { - printf("ERROR: Can't get %s data!\n", label); - free(label); - return; - } - print_label(label, label_size); free(label); sensors_get_available_features(name, feature, has_features, feature_vals, size, SENSORS_FEATURE_FAN); + val = FAN_FEATURE_VAL(SENSORS_FEATURE_FAN); if (FAN_FEATURE(SENSORS_FEATURE_FAN_FAULT) && FAN_FEATURE_VAL(SENSORS_FEATURE_FAN_FAULT))