| | 5048 | /* happens to be similar to asb100*/ |
| | 5049 | #define PRINT_LM93_IN(num, name, alarms) \ |
| | 5050 | print_asb100_in((name), ((alarms) & LM93_ALARM_IN##num), \ |
| | 5051 | (SENSORS_LM93_IN##num), \ |
| | 5052 | (SENSORS_LM93_IN##num##_MIN), \ |
| | 5053 | (SENSORS_LM93_IN##num##_MAX)) |
| | 5054 | |
| | 5055 | /* print_lm93_fan() |
| | 5056 | * where fan and fan_min are sensors feature IDs |
| | 5057 | */ |
| | 5058 | static void print_lm93_fan(const sensors_chip_name *name, int alarm, |
| | 5059 | int fan, int fan_min) |
| | 5060 | { |
| | 5061 | char *label = NULL; |
| | 5062 | double cur, min; |
| | 5063 | int valid; |
| | 5064 | |
| | 5065 | if (!sensors_get_label_and_valid(*name,fan,&label,&valid) && |
| | 5066 | !sensors_get_feature(*name,fan,&cur) && |
| | 5067 | !sensors_get_feature(*name,fan_min,&min)) { |
| | 5068 | if (valid) { |
| | 5069 | print_label(label,10); |
| | 5070 | printf("%4.0f RPM (min = %4.0f RPM) %s\n", |
| | 5071 | cur, min, alarm ? "ALARM" : ""); |
| | 5072 | } |
| | 5073 | } else |
| | 5074 | printf("ERROR: Can't get FAN data! (0x%04x)\n", fan); |
| | 5075 | free_the_label(&label); |
| | 5076 | } |
| | 5077 | |
| | 5078 | #define PRINT_LM93_FAN(num, name, alarms) \ |
| | 5079 | print_lm93_fan((name), ((alarms) & LM93_ALARM_FAN##num), \ |
| | 5080 | (SENSORS_LM93_FAN##num), \ |
| | 5081 | (SENSORS_LM93_FAN##num##_MIN)) |
| | 5082 | |
| | 5083 | /* print_lm93_temp() |
| | 5084 | * where temp, temp_min, and temp_max are sensors feature IDs |
| | 5085 | */ |
| | 5086 | static void print_lm93_temp(const sensors_chip_name *name, int alarm, |
| | 5087 | int temp, int temp_min, int temp_max) |
| | 5088 | { |
| | 5089 | char *label = NULL; |
| | 5090 | double cur, min, max; |
| | 5091 | int valid; |
| | 5092 | |
| | 5093 | if (!sensors_get_label_and_valid(*name,temp,&label,&valid) && |
| | 5094 | !sensors_get_feature(*name,temp,&cur) && |
| | 5095 | !sensors_get_feature(*name,temp_min,&min) && |
| | 5096 | !sensors_get_feature(*name,temp_max,&max)) { |
| | 5097 | if (valid) { |
| | 5098 | print_label(label,10); |
| | 5099 | print_temp_info(cur, max, min, MINMAX, 0, 0); |
| | 5100 | printf(" %s\n", alarm ? "ALARM" : ""); |
| | 5101 | } |
| | 5102 | } else |
| | 5103 | printf("ERROR: Can't get TEMP data! (0x%04x)\n", temp); |
| | 5104 | |
| | 5105 | free_the_label(&label); |
| | 5106 | } |
| | 5107 | |
| | 5108 | #define PRINT_LM93_TEMP(num, name, alarms) \ |
| | 5109 | print_lm93_temp((name), ((alarms) & LM93_ALARM_TEMP##num), \ |
| | 5110 | (SENSORS_LM93_TEMP##num), \ |
| | 5111 | (SENSORS_LM93_TEMP##num##_MIN), \ |
| | 5112 | (SENSORS_LM93_TEMP##num##_MAX)) |
| | 5113 | |
| | 5114 | /* print_lm93_vid() |
| | 5115 | * where vid is a sensors feature ID |
| | 5116 | */ |
| | 5117 | static void print_lm93_vid(const sensors_chip_name *name, int vid) |
| | 5118 | { |
| | 5119 | char *label = NULL; |
| | 5120 | double cur; |
| | 5121 | int valid; |
| | 5122 | |
| | 5123 | if (!sensors_get_label_and_valid(*name,vid,&label,&valid) && |
| | 5124 | !sensors_get_feature(*name,vid,&cur)) { |
| | 5125 | if (valid) { |
| | 5126 | print_label(label,10); |
| | 5127 | printf("%+5.3f V\n",cur); |
| | 5128 | } |
| | 5129 | } else { |
| | 5130 | printf("ERROR: Can't get VID data! (0x%04x)\n", vid); |
| | 5131 | } |
| | 5132 | free_the_label(&label); |
| | 5133 | } |
| | 5134 | |
| | 5135 | void print_lm93(const sensors_chip_name *name) |
| | 5136 | { |
| | 5137 | double cur; |
| | 5138 | int alarms = 0; |
| | 5139 | |
| | 5140 | if (!sensors_get_feature(*name,SENSORS_LM93_ALARMS,&cur)) |
| | 5141 | alarms = cur + 0.5; |
| | 5142 | else |
| | 5143 | printf("ERROR: Can't get alarm data!\n"); |
| | 5144 | |
| | 5145 | PRINT_LM93_IN(1, name, alarms); |
| | 5146 | PRINT_LM93_IN(2, name, alarms); |
| | 5147 | PRINT_LM93_IN(3, name, alarms); |
| | 5148 | PRINT_LM93_IN(4, name, alarms); |
| | 5149 | PRINT_LM93_IN(5, name, alarms); |
| | 5150 | PRINT_LM93_IN(6, name, alarms); |
| | 5151 | PRINT_LM93_IN(7, name, alarms); |
| | 5152 | PRINT_LM93_IN(8, name, alarms); |
| | 5153 | PRINT_LM93_IN(9, name, alarms); |
| | 5154 | PRINT_LM93_IN(10, name, alarms); |
| | 5155 | PRINT_LM93_IN(11, name, alarms); |
| | 5156 | PRINT_LM93_IN(12, name, alarms); |
| | 5157 | PRINT_LM93_IN(13, name, alarms); |
| | 5158 | PRINT_LM93_IN(14, name, alarms); |
| | 5159 | PRINT_LM93_IN(15, name, alarms); |
| | 5160 | PRINT_LM93_IN(16, name, alarms); |
| | 5161 | |
| | 5162 | PRINT_LM93_FAN(1, name, alarms); |
| | 5163 | PRINT_LM93_FAN(2, name, alarms); |
| | 5164 | PRINT_LM93_FAN(3, name, alarms); |
| | 5165 | PRINT_LM93_FAN(4, name, alarms); |
| | 5166 | |
| | 5167 | PRINT_LM93_TEMP(1, name, alarms); |
| | 5168 | PRINT_LM93_TEMP(2, name, alarms); |
| | 5169 | PRINT_LM93_TEMP(3, name, alarms); |
| | 5170 | |
| | 5171 | print_lm93_vid(name, SENSORS_LM93_VID1); |
| | 5172 | print_lm93_vid(name, SENSORS_LM93_VID2); |
| | 5173 | } |
| | 5174 | |