Changeset 4833

Show
Ignore:
Timestamp:
09/23/07 14:02:59 (6 years ago)
Author:
khali
Message:

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

Location:
lm-sensors/branches/lm-sensors-3.0.0/prog
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/branches/lm-sensors-3.0.0/prog/sensord/chips.c

    r4832 r4833  
    153153    int index0; 
    154154 
    155     index0 = iter->type - first_val - 1; 
     155    index0 = iter->type - first_val; 
    156156    if (index0 < 0 || index0 >= size) 
    157157      /* New feature in libsensors? Ignore. */ 
     
    163163} 
    164164 
    165 #define IN_FEATURE(x)      has_features[x - SENSORS_FEATURE_IN - 1] 
    166 #define IN_FEATURE_NR(x)   feature_nrs[x - SENSORS_FEATURE_IN - 1] 
     165#define IN_FEATURE(x)      has_features[x - SENSORS_FEATURE_IN] 
     166#define IN_FEATURE_NR(x)   feature_nrs[x - SENSORS_FEATURE_IN] 
    167167static void fillChipVoltage (FeatureDescriptor *voltage, 
    168168                             const sensors_chip_name *name, 
    169169                             const sensors_subfeature *feature) 
    170170{ 
    171   const int size = SENSORS_FEATURE_IN_BEEP - SENSORS_FEATURE_IN; 
    172   short has_features[SENSORS_FEATURE_IN_BEEP - SENSORS_FEATURE_IN] = { 0, }; 
    173   int feature_nrs[SENSORS_FEATURE_IN_BEEP - SENSORS_FEATURE_IN]; 
     171  const int size = SENSORS_FEATURE_IN_BEEP - SENSORS_FEATURE_IN + 1; 
     172  short has_features[SENSORS_FEATURE_IN_BEEP - SENSORS_FEATURE_IN + 1] = { 0, }; 
     173  int feature_nrs[SENSORS_FEATURE_IN_BEEP - SENSORS_FEATURE_IN + 1]; 
    174174  int pos = 0; 
    175175 
    176176  voltage->rrd = rrdF2; 
    177177  voltage->type = DataType_voltage; 
    178   voltage->dataNumbers[pos++] = feature->number; 
    179178 
    180179  getAvailableFeatures (name, feature, has_features, 
    181180                        feature_nrs, size, SENSORS_FEATURE_IN); 
     181 
     182  voltage->dataNumbers[pos++] = IN_FEATURE_NR(SENSORS_FEATURE_IN); 
    182183 
    183184  if (IN_FEATURE(SENSORS_FEATURE_IN_MIN) && 
     
    211212} 
    212213 
    213 #define TEMP_FEATURE(x)      has_features[x - SENSORS_FEATURE_TEMP - 1] 
    214 #define TEMP_FEATURE_NR(x)   feature_nrs[x - SENSORS_FEATURE_TEMP - 1] 
     214#define TEMP_FEATURE(x)      has_features[x - SENSORS_FEATURE_TEMP] 
     215#define TEMP_FEATURE_NR(x)   feature_nrs[x - SENSORS_FEATURE_TEMP] 
    215216static void fillChipTemperature (FeatureDescriptor *temperature, 
    216217                                 const sensors_chip_name *name, 
    217218                                 const sensors_subfeature *feature) 
    218219{ 
    219   const int size = SENSORS_FEATURE_TEMP_BEEP - SENSORS_FEATURE_TEMP; 
    220   short has_features[SENSORS_FEATURE_TEMP_BEEP - SENSORS_FEATURE_TEMP] = { 0, }; 
    221   int feature_nrs[SENSORS_FEATURE_TEMP_BEEP - SENSORS_FEATURE_TEMP]; 
     220  const int size = SENSORS_FEATURE_TEMP_BEEP - SENSORS_FEATURE_TEMP + 1; 
     221  short has_features[SENSORS_FEATURE_TEMP_BEEP - SENSORS_FEATURE_TEMP + 1] = { 0, }; 
     222  int feature_nrs[SENSORS_FEATURE_TEMP_BEEP - SENSORS_FEATURE_TEMP + 1]; 
    222223  int pos = 0; 
    223224 
    224225  temperature->rrd = rrdF1; 
    225226  temperature->type = DataType_temperature; 
    226   temperature->dataNumbers[pos++] = feature->number; 
    227227 
    228228  getAvailableFeatures (name, feature, has_features, 
    229229                        feature_nrs, size, SENSORS_FEATURE_TEMP); 
     230 
     231  temperature->dataNumbers[pos++] = TEMP_FEATURE_NR(SENSORS_FEATURE_TEMP); 
    230232 
    231233  if (TEMP_FEATURE(SENSORS_FEATURE_TEMP_MIN) && 
     
    262264} 
    263265 
    264 #define FAN_FEATURE(x)      has_features[x - SENSORS_FEATURE_FAN - 1] 
    265 #define FAN_FEATURE_NR(x)   feature_nrs[x - SENSORS_FEATURE_FAN - 1] 
     266#define FAN_FEATURE(x)      has_features[x - SENSORS_FEATURE_FAN] 
     267#define FAN_FEATURE_NR(x)   feature_nrs[x - SENSORS_FEATURE_FAN] 
    266268static void fillChipFan (FeatureDescriptor *fan, 
    267269                         const sensors_chip_name *name, 
    268270                         const sensors_subfeature *feature) 
    269271{ 
    270   const int size = SENSORS_FEATURE_FAN_BEEP - SENSORS_FEATURE_FAN; 
    271   short has_features[SENSORS_FEATURE_FAN_BEEP - SENSORS_FEATURE_FAN] = { 0, }; 
    272   int feature_nrs[SENSORS_FEATURE_FAN_BEEP - SENSORS_FEATURE_FAN]; 
     272  const int size = SENSORS_FEATURE_FAN_BEEP - SENSORS_FEATURE_FAN + 1; 
     273  short has_features[SENSORS_FEATURE_FAN_BEEP - SENSORS_FEATURE_FAN + 1] = { 0, }; 
     274  int feature_nrs[SENSORS_FEATURE_FAN_BEEP - SENSORS_FEATURE_FAN + 1]; 
    273275  int pos = 0; 
    274276 
    275277  fan->rrd = rrdF0; 
    276278  fan->type = DataType_rpm; 
    277   fan->dataNumbers[pos++] = feature->number; 
    278279 
    279280  getAvailableFeatures (name, feature, has_features, 
    280281                        feature_nrs, size, SENSORS_FEATURE_FAN); 
     282 
     283  fan->dataNumbers[pos++] = FAN_FEATURE_NR(SENSORS_FEATURE_FAN); 
    281284 
    282285  if (FAN_FEATURE(SENSORS_FEATURE_FAN_MIN)) { 
  • lm-sensors/branches/lm-sensors-3.0.0/prog/sensors/chips.c

    r4832 r4833  
    8585                int indx, err; 
    8686 
    87                 indx = iter->type - first_val - 1; 
     87                indx = iter->type - first_val; 
    8888                if (indx < 0 || indx >= size) 
    8989                        /* New feature in libsensors? Ignore. */ 
     
    141141} 
    142142 
    143 #define TEMP_FEATURE(x)         has_features[x - SENSORS_FEATURE_TEMP - 1] 
    144 #define TEMP_FEATURE_VAL(x)     feature_vals[x - SENSORS_FEATURE_TEMP - 1] 
     143#define TEMP_FEATURE(x)         has_features[x - SENSORS_FEATURE_TEMP] 
     144#define TEMP_FEATURE_VAL(x)     feature_vals[x - SENSORS_FEATURE_TEMP] 
    145145static void print_chip_temp(const sensors_chip_name *name, 
    146146                            const sensors_subfeature *feature, 
     
    151151        int alarm, crit_displayed = 0; 
    152152        char *label; 
    153         const int size = SENSORS_FEATURE_TEMP_TYPE - SENSORS_FEATURE_TEMP; 
    154         short has_features[SENSORS_FEATURE_TEMP_TYPE - SENSORS_FEATURE_TEMP] = { 0, }; 
    155         double feature_vals[SENSORS_FEATURE_TEMP_TYPE - SENSORS_FEATURE_TEMP] = { 0.0, }; 
     153        const int size = SENSORS_FEATURE_TEMP_TYPE - SENSORS_FEATURE_TEMP + 1; 
     154        short has_features[SENSORS_FEATURE_TEMP_TYPE - SENSORS_FEATURE_TEMP + 1] = { 0, }; 
     155        double feature_vals[SENSORS_FEATURE_TEMP_TYPE - SENSORS_FEATURE_TEMP + 1] = { 0.0, }; 
    156156 
    157157        if (!(label = sensors_get_label(name, feature->number))) { 
     
    160160        } 
    161161 
    162         if (sensors_get_value(name, feature->number, &val)) { 
    163                 printf("ERROR: Can't get %s data!\n", label); 
    164                 free(label); 
    165                 return; 
    166         } 
    167  
    168162        sensors_get_available_features(name, feature, has_features, 
    169163                                       feature_vals, size, 
    170164                                       SENSORS_FEATURE_TEMP); 
     165        val = TEMP_FEATURE_VAL(SENSORS_FEATURE_TEMP); 
    171166 
    172167        alarm = TEMP_FEATURE(SENSORS_FEATURE_TEMP_ALARM) && 
     
    279274} 
    280275 
    281 #define IN_FEATURE(x)           has_features[x - SENSORS_FEATURE_IN - 1] 
    282 #define IN_FEATURE_VAL(x)       feature_vals[x - SENSORS_FEATURE_IN - 1] 
     276#define IN_FEATURE(x)           has_features[x - SENSORS_FEATURE_IN] 
     277#define IN_FEATURE_VAL(x)       feature_vals[x - SENSORS_FEATURE_IN] 
    283278static void print_chip_in(const sensors_chip_name *name, 
    284279                          const sensors_subfeature *feature, 
    285280                          int label_size) 
    286281{ 
    287         const int size = SENSORS_FEATURE_IN_MAX_ALARM - SENSORS_FEATURE_IN; 
    288         short has_features[SENSORS_FEATURE_IN_MAX_ALARM - SENSORS_FEATURE_IN] = { 0, }; 
    289         double feature_vals[SENSORS_FEATURE_IN_MAX_ALARM - SENSORS_FEATURE_IN] = { 0.0, }; 
     282        const int size = SENSORS_FEATURE_IN_MAX_ALARM - SENSORS_FEATURE_IN + 1; 
     283        short has_features[SENSORS_FEATURE_IN_MAX_ALARM - SENSORS_FEATURE_IN + 1] = { 0, }; 
     284        double feature_vals[SENSORS_FEATURE_IN_MAX_ALARM - SENSORS_FEATURE_IN + 1] = { 0.0, }; 
    290285        double val, alarm_max, alarm_min; 
    291286        char *label; 
     
    296291        } 
    297292 
    298         if (sensors_get_value(name, feature->number, &val)) { 
    299                 printf("ERROR: Can't get %s data!\n", label); 
    300                 free(label); 
    301                 return; 
    302         } 
    303  
    304293        sensors_get_available_features(name, feature, has_features, 
    305294                                       feature_vals, size, SENSORS_FEATURE_IN); 
     295        val = IN_FEATURE_VAL(SENSORS_FEATURE_IN); 
    306296 
    307297        print_label(label, label_size); 
     
    344334} 
    345335 
    346 #define FAN_FEATURE(x)          has_features[x - SENSORS_FEATURE_FAN - 1] 
    347 #define FAN_FEATURE_VAL(x)      feature_vals[x - SENSORS_FEATURE_FAN - 1] 
     336#define FAN_FEATURE(x)          has_features[x - SENSORS_FEATURE_FAN] 
     337#define FAN_FEATURE_VAL(x)      feature_vals[x - SENSORS_FEATURE_FAN] 
    348338static void print_chip_fan(const sensors_chip_name *name, 
    349339                           const sensors_subfeature *feature, 
     
    351341{ 
    352342        char *label; 
    353         const int size = SENSORS_FEATURE_FAN_DIV - SENSORS_FEATURE_FAN; 
    354         short has_features[SENSORS_FEATURE_FAN_DIV - SENSORS_FEATURE_FAN] = { 0, }; 
    355         double feature_vals[SENSORS_FEATURE_FAN_DIV - SENSORS_FEATURE_FAN] = { 0.0, }; 
     343        const int size = SENSORS_FEATURE_FAN_DIV - SENSORS_FEATURE_FAN + 1; 
     344        short has_features[SENSORS_FEATURE_FAN_DIV - SENSORS_FEATURE_FAN + 1] = { 0, }; 
     345        double feature_vals[SENSORS_FEATURE_FAN_DIV - SENSORS_FEATURE_FAN + 1] = { 0.0, }; 
    356346        double val; 
    357347 
     
    361351        } 
    362352 
    363         if (sensors_get_value(name, feature->number, &val)) { 
    364                 printf("ERROR: Can't get %s data!\n", label); 
    365                 free(label); 
    366                 return; 
    367         } 
    368  
    369353        print_label(label, label_size); 
    370354        free(label); 
     
    372356        sensors_get_available_features(name, feature, has_features, 
    373357                                       feature_vals, size, SENSORS_FEATURE_FAN); 
     358        val = FAN_FEATURE_VAL(SENSORS_FEATURE_FAN); 
    374359 
    375360        if (FAN_FEATURE(SENSORS_FEATURE_FAN_FAULT) &&