Changeset 2216

Show
Ignore:
Timestamp:
01/14/04 07:11:08 (9 years ago)
Author:
mmh
Message:

Add proper sensors support for asb100.

Location:
lm-sensors/trunk/prog/sensors
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/prog/sensors/chips.c

    r2210 r2216  
    47004700} 
    47014701 
     4702/* print_asb100_in() 
     4703 *   where in, in_min, and in_max are sensors feature IDs 
     4704 */ 
     4705static void print_asb100_in(const sensors_chip_name *name, int alarm, 
     4706        int in, int in_min, int in_max) 
     4707{ 
     4708  char *label = NULL; 
     4709  double cur, min, max; 
     4710  int valid; 
     4711 
     4712  if (!sensors_get_label_and_valid(*name,in,&label,&valid) && 
     4713      !sensors_get_feature(*name,in,&cur) && 
     4714      !sensors_get_feature(*name,in_min,&min) && 
     4715      !sensors_get_feature(*name,in_max,&max)) { 
     4716    if (valid) { 
     4717      print_label(label,10); 
     4718      printf("%+6.2f V  (min = %+6.2f V, max = %+6.2f V)       %s\n", 
     4719           cur, min, max, alarm ? "ALARM" : ""); 
     4720    } 
     4721  } else 
     4722    printf("ERROR: Can't get IN data! (0x%04x)\n", in); 
     4723  free_the_label(&label); 
     4724} 
     4725 
     4726#define PRINT_ASB100_IN(num, name, alarms) \ 
     4727        print_asb100_in((name), ((alarms) & ASB100_ALARM_IN##num), \ 
     4728                (SENSORS_ASB100_IN##num), \ 
     4729                (SENSORS_ASB100_IN##num##_MIN), \ 
     4730                (SENSORS_ASB100_IN##num##_MAX)) 
     4731 
     4732/* print_asb100_fan() 
     4733 *   where fan, fan_div, and fan_min are sensors feature IDs 
     4734 */ 
     4735static void print_asb100_fan(const sensors_chip_name *name, int alarm, 
     4736        int fan, int fan_div, int fan_min) 
     4737{ 
     4738  char *label = NULL; 
     4739  double cur, div, min; 
     4740  int valid; 
     4741 
     4742  if (!sensors_get_label_and_valid(*name,fan,&label,&valid) && 
     4743      !sensors_get_feature(*name,fan,&cur) && 
     4744      !sensors_get_feature(*name,fan_div,&div) && 
     4745      !sensors_get_feature(*name,fan_min,&min)) { 
     4746    if (valid) { 
     4747      print_label(label,10); 
     4748      printf("%4.0f RPM  (min = %4.0f RPM, div = %1.0f)              %s\n", 
     4749           cur, min, div, alarm ? "ALARM" : ""); 
     4750    } 
     4751  } else 
     4752    printf("ERROR: Can't get FAN data! (0x%04x)\n", fan); 
     4753  free_the_label(&label); 
     4754} 
     4755 
     4756#define PRINT_ASB100_FAN(num, name, alarms) \ 
     4757        print_asb100_fan((name), ((alarms) & ASB100_ALARM_FAN##num), \ 
     4758                (SENSORS_ASB100_FAN##num), \ 
     4759                (SENSORS_ASB100_FAN##num##_DIV), \ 
     4760                (SENSORS_ASB100_FAN##num##_MIN)) 
     4761 
     4762/* print_asb100_temp() 
     4763 * where temp, temp_max, and temp_hyst are sensors feature IDs 
     4764 */ 
     4765static void print_asb100_temp(const sensors_chip_name *name, int alarm, 
     4766        int temp, int temp_max, int temp_hyst) 
     4767{ 
     4768  char *label = NULL; 
     4769  double cur, max, hyst; 
     4770  int valid; 
     4771 
     4772  if (!sensors_get_label_and_valid(*name,temp,&label,&valid) && 
     4773      !sensors_get_feature(*name,temp,&cur) && 
     4774      !sensors_get_feature(*name,temp_max,&max) && 
     4775      !sensors_get_feature(*name,temp_hyst,&hyst)) { 
     4776    if (valid) { 
     4777      print_label(label,10); 
     4778      if (hyst == 127) 
     4779        print_temp_info(cur, max, 0, MAXONLY, 0, 0); 
     4780      else 
     4781        print_temp_info(cur, max, hyst, HYST, 0, 0); 
     4782 
     4783      printf(" %s\n", alarm ? "ALARM" : ""); 
     4784    } 
     4785  } else 
     4786    printf("ERROR: Can't get TEMP data! (0x%04x)\n", temp); 
     4787 
     4788  free_the_label(&label); 
     4789} 
     4790 
     4791#ifndef ASB100_ALARM_TEMP4  
     4792#define ASB100_ALARM_TEMP4 0 
     4793#endif 
     4794 
     4795#define PRINT_ASB100_TEMP(num, name, alarms) \ 
     4796        print_asb100_temp((name), ((alarms) & ASB100_ALARM_TEMP##num), \ 
     4797                (SENSORS_ASB100_TEMP##num), \ 
     4798                (SENSORS_ASB100_TEMP##num##_OVER), \ 
     4799                (SENSORS_ASB100_TEMP##num##_HYST)) 
     4800 
     4801 
     4802void print_asb100(const sensors_chip_name *name) 
     4803{ 
     4804  char *label = NULL; 
     4805  double cur; 
     4806  int valid, alarms = 0; 
     4807 
     4808  if (!sensors_get_feature(*name,SENSORS_ASB100_ALARMS,&cur))  
     4809    alarms = cur + 0.5; 
     4810  else 
     4811    printf("ERROR: Can't get alarm data!\n"); 
     4812 
     4813  PRINT_ASB100_IN(0, name, alarms); 
     4814  PRINT_ASB100_IN(1, name, alarms); 
     4815  PRINT_ASB100_IN(2, name, alarms); 
     4816  PRINT_ASB100_IN(3, name, alarms); 
     4817  PRINT_ASB100_IN(4, name, alarms); 
     4818  PRINT_ASB100_IN(5, name, alarms); 
     4819  PRINT_ASB100_IN(6, name, alarms); 
     4820 
     4821  PRINT_ASB100_FAN(1, name, alarms); 
     4822  PRINT_ASB100_FAN(2, name, alarms); 
     4823  PRINT_ASB100_FAN(3, name, alarms); 
     4824 
     4825  PRINT_ASB100_TEMP(1, name, alarms); 
     4826  PRINT_ASB100_TEMP(2, name, alarms); 
     4827  PRINT_ASB100_TEMP(3, name, alarms); 
     4828  PRINT_ASB100_TEMP(4, name, alarms); 
     4829 
     4830  if (!sensors_get_label_and_valid(*name,SENSORS_ASB100_VID,&label,&valid) && 
     4831      !sensors_get_feature(*name,SENSORS_ASB100_VID,&cur)) { 
     4832    if (valid) { 
     4833      print_label(label,10); 
     4834      printf("%+5.3f V\n",cur); 
     4835    } 
     4836  } else { 
     4837    printf("ERROR: Can't get VID data!\n"); 
     4838  } 
     4839  free_the_label(&label); 
     4840 
     4841  if (!sensors_get_label_and_valid(*name,SENSORS_ASB100_ALARMS,&label,&valid)) { 
     4842    print_label(label,10); 
     4843    if (alarms & ASB100_ALARM_CHAS) 
     4844      printf("Chassis intrusion detection                      ALARM\n"); 
     4845    else 
     4846      printf("\n"); 
     4847  } 
     4848  free_the_label(&label); 
     4849 
     4850} 
     4851 
    47024852void print_unknown_chip(const sensors_chip_name *name) 
    47034853{ 
  • lm-sensors/trunk/prog/sensors/chips.h

    r2181 r2216  
    2525extern void print_unknown_chip(const sensors_chip_name *name); 
    2626 
     27extern void print_asb100(const sensors_chip_name *name); 
    2728extern void print_ds1621(const sensors_chip_name *name); 
    2829extern void print_mtp008(const sensors_chip_name *name); 
  • lm-sensors/trunk/prog/sensors/main.c

    r2206 r2216  
    387387        { "xeontemp", print_xeontemp }, 
    388388        { "max6650", print_max6650 }, 
     389        { "asb100", print_asb100 }, 
    389390        { NULL, NULL } 
    390391};