| | 4702 | /* print_asb100_in() |
| | 4703 | * where in, in_min, and in_max are sensors feature IDs |
| | 4704 | */ |
| | 4705 | static 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 | */ |
| | 4735 | static 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 | */ |
| | 4765 | static 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 | |
| | 4802 | void 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 | |