Changeset 5379

Show
Ignore:
Timestamp:
10/24/08 11:04:26 (6 years ago)
Author:
khali
Message:

Add support for current sensors.

Location:
lm-sensors/branches/lm-sensors-3.0.0
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/branches/lm-sensors-3.0.0/CHANGES

    r5378 r5379  
    44SVN-HEAD 
    55  libsensors: Add support for instantaneous power sensors 
     6              Add support for current sensors 
    67  maxilife scripts: Delete (driver never ported to Linux 2.6) 
    78  sensors: Add support for instantaneous power sensors 
     9           Add support for current sensors 
    810  sensors-detect: Fix detection of ADT7463 and LM96000 
    911                  Add VIA VX800/VX820 support  
  • lm-sensors/branches/lm-sensors-3.0.0/doc/libsensors-API.txt

    r5378 r5379  
    1212  enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT_HIGHEST 
    1313  enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT_LOWEST 
     14* Added support for current sensors 
     15  enum sensors_feature_type SENSORS_FEATURE_CURR 
     16  enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_INPUT 
     17  enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MIN 
     18  enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MAX 
     19  enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_ALARM 
     20  enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MIN_ALARM 
     21  enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MAX_ALARM 
     22  enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_BEEP 
    1423 
    15240x401   lm-sensors 3.0.2 to 3.0.3 
  • lm-sensors/branches/lm-sensors-3.0.0/lib/sensors.h

    r5378 r5379  
    135135        SENSORS_FEATURE_POWER           = 0x03, 
    136136        SENSORS_FEATURE_ENERGY          = 0x04, 
     137        SENSORS_FEATURE_CURR            = 0x05, 
    137138        SENSORS_FEATURE_VID             = 0x10, 
    138139        SENSORS_FEATURE_BEEP_ENABLE     = 0x18, 
     
    182183 
    183184        SENSORS_SUBFEATURE_ENERGY_INPUT = SENSORS_FEATURE_ENERGY << 8, 
     185 
     186        SENSORS_SUBFEATURE_CURR_INPUT = SENSORS_FEATURE_CURR << 8, 
     187        SENSORS_SUBFEATURE_CURR_MIN, 
     188        SENSORS_SUBFEATURE_CURR_MAX, 
     189        SENSORS_SUBFEATURE_CURR_ALARM = (SENSORS_FEATURE_CURR << 8) | 0x80, 
     190        SENSORS_SUBFEATURE_CURR_MIN_ALARM, 
     191        SENSORS_SUBFEATURE_CURR_MAX_ALARM, 
     192        SENSORS_SUBFEATURE_CURR_BEEP, 
    184193 
    185194        SENSORS_SUBFEATURE_VID = SENSORS_FEATURE_VID << 8, 
  • lm-sensors/branches/lm-sensors-3.0.0/lib/sysfs.c

    r5378 r5379  
    139139#define MAX_SENSORS_PER_TYPE    20 
    140140#define MAX_SUBFEATURES         8 
    141 #define MAX_SENSOR_TYPES        5 
     141#define MAX_SENSOR_TYPES        6 
    142142/* Room for all 5 types (in, fan, temp, power, energy) with all their 
    143143   subfeatures + VID + misc features */ 
     
    154154        case SENSORS_SUBFEATURE_IN_INPUT: 
    155155        case SENSORS_SUBFEATURE_TEMP_INPUT: 
     156        case SENSORS_SUBFEATURE_CURR_INPUT: 
    156157                return 1000; 
    157158        case SENSORS_SUBFEATURE_FAN_INPUT: 
     
    185186        case SENSORS_FEATURE_POWER: 
    186187        case SENSORS_FEATURE_ENERGY: 
     188        case SENSORS_FEATURE_CURR: 
    187189                underscore = strchr(sfname, '_'); 
    188190                name = strndup(sfname, underscore - sfname); 
     
    260262}; 
    261263 
     264static const struct subfeature_type_match curr_matches[] = { 
     265        { "input", SENSORS_SUBFEATURE_CURR_INPUT }, 
     266        { "min", SENSORS_SUBFEATURE_CURR_MIN }, 
     267        { "max", SENSORS_SUBFEATURE_CURR_MAX }, 
     268        { "alarm", SENSORS_SUBFEATURE_CURR_ALARM }, 
     269        { "min_alarm", SENSORS_SUBFEATURE_CURR_MIN_ALARM }, 
     270        { "max_alarm", SENSORS_SUBFEATURE_CURR_MAX_ALARM }, 
     271        { NULL, 0 } 
     272}; 
     273 
    262274static const struct subfeature_type_match cpu_matches[] = { 
    263275        { "vid", SENSORS_SUBFEATURE_VID }, 
     
    271283        { "cpu%d%c", cpu_matches }, 
    272284        { "power%d%c", power_matches }, 
     285        { "curr%d%c", curr_matches }, 
    273286        { "energy%d%c", energy_matches }, 
    274287}; 
     
    361374                case SENSORS_SUBFEATURE_POWER_AVERAGE: 
    362375                case SENSORS_SUBFEATURE_ENERGY_INPUT: 
     376                case SENSORS_SUBFEATURE_CURR_INPUT: 
    363377                        nr--; 
    364378                        break; 
  • lm-sensors/branches/lm-sensors-3.0.0/prog/sensors/chips.c

    r5378 r5379  
    579579} 
    580580 
     581static void print_chip_curr(const sensors_chip_name *name, 
     582                            const sensors_feature *feature, 
     583                            int label_size) 
     584{ 
     585        const sensors_subfeature *sf, *sfmin, *sfmax; 
     586        double alarm_max, alarm_min; 
     587        char *label; 
     588 
     589        if (!(label = sensors_get_label(name, feature))) { 
     590                fprintf(stderr, "ERROR: Can't get label of feature %s!\n", 
     591                        feature->name); 
     592                return; 
     593        } 
     594        print_label(label, label_size); 
     595        free(label); 
     596 
     597        sf = sensors_get_subfeature(name, feature, 
     598                                    SENSORS_SUBFEATURE_CURR_INPUT); 
     599        if (sf) 
     600                printf("%+6.2f A", get_value(name, sf)); 
     601        else 
     602                printf("     N/A"); 
     603 
     604        sfmin = sensors_get_subfeature(name, feature, 
     605                                       SENSORS_SUBFEATURE_CURR_MIN); 
     606        sfmax = sensors_get_subfeature(name, feature, 
     607                                       SENSORS_SUBFEATURE_CURR_MAX); 
     608        if (sfmin && sfmax) 
     609                printf("  (min = %+6.2f A, max = %+6.2f A)", 
     610                       get_value(name, sfmin), 
     611                       get_value(name, sfmax)); 
     612        else if (sfmin) 
     613                printf("  (min = %+6.2f A)", 
     614                       get_value(name, sfmin)); 
     615        else if (sfmax) 
     616                printf("  (max = %+6.2f A)", 
     617                       get_value(name, sfmax)); 
     618 
     619        sf = sensors_get_subfeature(name, feature, 
     620                                    SENSORS_SUBFEATURE_CURR_ALARM); 
     621        sfmin = sensors_get_subfeature(name, feature, 
     622                                       SENSORS_SUBFEATURE_CURR_MIN_ALARM); 
     623        sfmax = sensors_get_subfeature(name, feature, 
     624                                       SENSORS_SUBFEATURE_CURR_MAX_ALARM); 
     625        if (sfmin || sfmax) { 
     626                alarm_max = sfmax ? get_value(name, sfmax) : 0; 
     627                alarm_min = sfmin ? get_value(name, sfmin) : 0; 
     628 
     629                if (alarm_min || alarm_max) { 
     630                        printf(" ALARM ("); 
     631 
     632                        if (alarm_min) 
     633                                printf("MIN"); 
     634                        if (alarm_max) 
     635                                printf("%sMAX", (alarm_min) ? ", " : ""); 
     636 
     637                        printf(")"); 
     638                } 
     639        } else if (sf) { 
     640                printf("   %s", 
     641                       get_value(name, sf) ? "ALARM" : ""); 
     642        } 
     643 
     644        printf("\n"); 
     645} 
     646 
    581647void print_chip(const sensors_chip_name *name) 
    582648{ 
     
    610676                        print_chip_energy(name, feature, label_size); 
    611677                        break; 
     678                case SENSORS_FEATURE_CURR: 
     679                        print_chip_curr(name, feature, label_size); 
     680                        break; 
    612681                default: 
    613682                        continue;