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))