kopia lustrzana https://github.com/pa3gsb/Radioberry-2.x
172 wiersze
5.3 KiB
C
172 wiersze
5.3 KiB
C
|
|
#ifndef __SENSORS_H__
|
|
#define __SENSORS_H__
|
|
|
|
|
|
#include <stdio.h>
|
|
#include <limits.h>
|
|
#include <stdlib.h>
|
|
#include <errno.h>
|
|
|
|
|
|
#define SENSORS_ERR_WILDCARDS 1 /* Wildcard found in chip name */
|
|
#define SENSORS_ERR_NO_ENTRY 2 /* No such subfeature known */
|
|
#define SENSORS_ERR_ACCESS_R 3 /* Can't read */
|
|
#define SENSORS_ERR_KERNEL 4 /* Kernel interface error */
|
|
#define SENSORS_ERR_DIV_ZERO 5 /* Divide by zero */
|
|
#define SENSORS_ERR_CHIP_NAME 6 /* Can't parse chip name */
|
|
#define SENSORS_ERR_BUS_NAME 7 /* Can't parse bus name */
|
|
#define SENSORS_ERR_PARSE 8 /* General parse error */
|
|
#define SENSORS_ERR_ACCESS_W 9 /* Can't write */
|
|
#define SENSORS_ERR_IO 10 /* I/O error */
|
|
#define SENSORS_ERR_RECURSION 11 /* Evaluation recurses too deep */
|
|
|
|
typedef enum sensors_feature_type {
|
|
SENSORS_FEATURE_IN = 0x00,
|
|
SENSORS_FEATURE_FAN = 0x01,
|
|
SENSORS_FEATURE_TEMP = 0x02,
|
|
SENSORS_FEATURE_POWER = 0x03,
|
|
SENSORS_FEATURE_ENERGY = 0x04,
|
|
SENSORS_FEATURE_CURR = 0x05,
|
|
SENSORS_FEATURE_HUMIDITY = 0x06,
|
|
SENSORS_FEATURE_MAX_MAIN,
|
|
SENSORS_FEATURE_VID = 0x10,
|
|
SENSORS_FEATURE_INTRUSION = 0x11,
|
|
SENSORS_FEATURE_MAX_OTHER,
|
|
SENSORS_FEATURE_BEEP_ENABLE = 0x18,
|
|
SENSORS_FEATURE_MAX,
|
|
SENSORS_FEATURE_UNKNOWN = INT_MAX,
|
|
} sensors_feature_type;
|
|
|
|
/* All the sensor types (in, fan, temp, vid) are a multiple of 0x100 apart,
|
|
and sensor subfeatures which have no compute mapping have bit 7 set. */
|
|
typedef enum sensors_subfeature_type {
|
|
SENSORS_SUBFEATURE_IN_INPUT = SENSORS_FEATURE_IN << 8,
|
|
SENSORS_SUBFEATURE_IN_MIN,
|
|
SENSORS_SUBFEATURE_IN_MAX,
|
|
SENSORS_SUBFEATURE_IN_LCRIT,
|
|
SENSORS_SUBFEATURE_IN_CRIT,
|
|
SENSORS_SUBFEATURE_IN_AVERAGE,
|
|
SENSORS_SUBFEATURE_IN_LOWEST,
|
|
SENSORS_SUBFEATURE_IN_HIGHEST,
|
|
SENSORS_SUBFEATURE_IN_ALARM = (SENSORS_FEATURE_IN << 8) | 0x80,
|
|
SENSORS_SUBFEATURE_IN_MIN_ALARM,
|
|
SENSORS_SUBFEATURE_IN_MAX_ALARM,
|
|
SENSORS_SUBFEATURE_IN_BEEP,
|
|
SENSORS_SUBFEATURE_IN_LCRIT_ALARM,
|
|
SENSORS_SUBFEATURE_IN_CRIT_ALARM,
|
|
|
|
SENSORS_SUBFEATURE_FAN_INPUT = SENSORS_FEATURE_FAN << 8,
|
|
SENSORS_SUBFEATURE_FAN_MIN,
|
|
SENSORS_SUBFEATURE_FAN_MAX,
|
|
SENSORS_SUBFEATURE_FAN_ALARM = (SENSORS_FEATURE_FAN << 8) | 0x80,
|
|
SENSORS_SUBFEATURE_FAN_FAULT,
|
|
SENSORS_SUBFEATURE_FAN_DIV,
|
|
SENSORS_SUBFEATURE_FAN_BEEP,
|
|
SENSORS_SUBFEATURE_FAN_PULSES,
|
|
SENSORS_SUBFEATURE_FAN_MIN_ALARM,
|
|
SENSORS_SUBFEATURE_FAN_MAX_ALARM,
|
|
|
|
SENSORS_SUBFEATURE_TEMP_INPUT = SENSORS_FEATURE_TEMP << 8,
|
|
SENSORS_SUBFEATURE_TEMP_MAX,
|
|
SENSORS_SUBFEATURE_TEMP_MAX_HYST,
|
|
SENSORS_SUBFEATURE_TEMP_MIN,
|
|
SENSORS_SUBFEATURE_TEMP_CRIT,
|
|
SENSORS_SUBFEATURE_TEMP_CRIT_HYST,
|
|
SENSORS_SUBFEATURE_TEMP_LCRIT,
|
|
SENSORS_SUBFEATURE_TEMP_EMERGENCY,
|
|
SENSORS_SUBFEATURE_TEMP_EMERGENCY_HYST,
|
|
SENSORS_SUBFEATURE_TEMP_LOWEST,
|
|
SENSORS_SUBFEATURE_TEMP_HIGHEST,
|
|
SENSORS_SUBFEATURE_TEMP_MIN_HYST,
|
|
SENSORS_SUBFEATURE_TEMP_LCRIT_HYST,
|
|
SENSORS_SUBFEATURE_TEMP_ALARM = (SENSORS_FEATURE_TEMP << 8) | 0x80,
|
|
SENSORS_SUBFEATURE_TEMP_MAX_ALARM,
|
|
SENSORS_SUBFEATURE_TEMP_MIN_ALARM,
|
|
SENSORS_SUBFEATURE_TEMP_CRIT_ALARM,
|
|
SENSORS_SUBFEATURE_TEMP_FAULT,
|
|
SENSORS_SUBFEATURE_TEMP_TYPE,
|
|
SENSORS_SUBFEATURE_TEMP_OFFSET,
|
|
SENSORS_SUBFEATURE_TEMP_BEEP,
|
|
SENSORS_SUBFEATURE_TEMP_EMERGENCY_ALARM,
|
|
SENSORS_SUBFEATURE_TEMP_LCRIT_ALARM,
|
|
|
|
SENSORS_SUBFEATURE_POWER_AVERAGE = SENSORS_FEATURE_POWER << 8,
|
|
SENSORS_SUBFEATURE_POWER_AVERAGE_HIGHEST,
|
|
SENSORS_SUBFEATURE_POWER_AVERAGE_LOWEST,
|
|
SENSORS_SUBFEATURE_POWER_INPUT,
|
|
SENSORS_SUBFEATURE_POWER_INPUT_HIGHEST,
|
|
SENSORS_SUBFEATURE_POWER_INPUT_LOWEST,
|
|
SENSORS_SUBFEATURE_POWER_CAP,
|
|
SENSORS_SUBFEATURE_POWER_CAP_HYST,
|
|
SENSORS_SUBFEATURE_POWER_MAX,
|
|
SENSORS_SUBFEATURE_POWER_CRIT,
|
|
SENSORS_SUBFEATURE_POWER_AVERAGE_INTERVAL = (SENSORS_FEATURE_POWER << 8) | 0x80,
|
|
SENSORS_SUBFEATURE_POWER_ALARM,
|
|
SENSORS_SUBFEATURE_POWER_CAP_ALARM,
|
|
SENSORS_SUBFEATURE_POWER_MAX_ALARM,
|
|
SENSORS_SUBFEATURE_POWER_CRIT_ALARM,
|
|
|
|
SENSORS_SUBFEATURE_ENERGY_INPUT = SENSORS_FEATURE_ENERGY << 8,
|
|
|
|
SENSORS_SUBFEATURE_CURR_INPUT = SENSORS_FEATURE_CURR << 8,
|
|
SENSORS_SUBFEATURE_CURR_MIN,
|
|
SENSORS_SUBFEATURE_CURR_MAX,
|
|
SENSORS_SUBFEATURE_CURR_LCRIT,
|
|
SENSORS_SUBFEATURE_CURR_CRIT,
|
|
SENSORS_SUBFEATURE_CURR_AVERAGE,
|
|
SENSORS_SUBFEATURE_CURR_LOWEST,
|
|
SENSORS_SUBFEATURE_CURR_HIGHEST,
|
|
SENSORS_SUBFEATURE_CURR_ALARM = (SENSORS_FEATURE_CURR << 8) | 0x80,
|
|
SENSORS_SUBFEATURE_CURR_MIN_ALARM,
|
|
SENSORS_SUBFEATURE_CURR_MAX_ALARM,
|
|
SENSORS_SUBFEATURE_CURR_BEEP,
|
|
SENSORS_SUBFEATURE_CURR_LCRIT_ALARM,
|
|
SENSORS_SUBFEATURE_CURR_CRIT_ALARM,
|
|
|
|
SENSORS_SUBFEATURE_HUMIDITY_INPUT = SENSORS_FEATURE_HUMIDITY << 8,
|
|
|
|
SENSORS_SUBFEATURE_VID = SENSORS_FEATURE_VID << 8,
|
|
|
|
SENSORS_SUBFEATURE_INTRUSION_ALARM = SENSORS_FEATURE_INTRUSION << 8,
|
|
SENSORS_SUBFEATURE_INTRUSION_BEEP,
|
|
|
|
SENSORS_SUBFEATURE_BEEP_ENABLE = SENSORS_FEATURE_BEEP_ENABLE << 8,
|
|
|
|
SENSORS_SUBFEATURE_UNKNOWN = INT_MAX,
|
|
} sensors_subfeature_type;
|
|
|
|
|
|
static
|
|
int get_type_scaling(sensors_subfeature_type type)
|
|
{
|
|
/* Multipliers for subfeatures */
|
|
switch (type & 0xFF80) {
|
|
case SENSORS_SUBFEATURE_IN_INPUT:
|
|
case SENSORS_SUBFEATURE_TEMP_INPUT:
|
|
case SENSORS_SUBFEATURE_CURR_INPUT:
|
|
case SENSORS_SUBFEATURE_HUMIDITY_INPUT:
|
|
return 1000;
|
|
case SENSORS_SUBFEATURE_FAN_INPUT:
|
|
return 1;
|
|
case SENSORS_SUBFEATURE_POWER_AVERAGE:
|
|
case SENSORS_SUBFEATURE_ENERGY_INPUT:
|
|
return 1000000;
|
|
}
|
|
|
|
/* Multipliers for second class subfeatures
|
|
that need their own multiplier */
|
|
switch (type) {
|
|
case SENSORS_SUBFEATURE_POWER_AVERAGE_INTERVAL:
|
|
case SENSORS_SUBFEATURE_VID:
|
|
case SENSORS_SUBFEATURE_TEMP_OFFSET:
|
|
return 1000;
|
|
default:
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif |