root/lm-sensors/branches/lm-sensors-3.0.0/lib/sensors.h @ 5163

Revision 5163, 8.7 KB (checked in by khali, 7 years ago)

Patch from Aurelien Jarno:

I have just noticed that the FSF address is the old one in all files
except COPYING. Please find a patch below to fix that.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1/*
2    sensors.h - Part of libsensors, a Linux library for reading sensor data.
3    Copyright (c) 1998, 1999  Frodo Looijaard <frodol@dds.nl>
4    Copyright (C) 2007        Jean Delvare <khali@linux-fr.org>
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 2 of the License, or
9    (at your option) any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19    MA 02110-1301 USA.
20*/
21
22#ifndef LIB_SENSORS_SENSORS_H
23#define LIB_SENSORS_SENSORS_H
24
25#include <stdio.h>
26#include <limits.h>
27
28/* Publicly accessible library functions */
29
30/* libsensors API version define, first digit is the major version (changed
31   when the API + ABI breaks), the third digit is incremented to track small
32   API additions like new flags / enum values. The second digit is for tracking
33   larger additions like new methods. */
34#define SENSORS_API_VERSION 0x400
35
36#define SENSORS_CHIP_NAME_PREFIX_ANY NULL
37#define SENSORS_CHIP_NAME_ADDR_ANY -1
38
39#define SENSORS_BUS_TYPE_ANY    (-1)
40#define SENSORS_BUS_TYPE_I2C    0
41#define SENSORS_BUS_TYPE_ISA    1
42#define SENSORS_BUS_TYPE_PCI    2
43#define SENSORS_BUS_TYPE_SPI    3
44#define SENSORS_BUS_NR_ANY      (-1)
45#define SENSORS_BUS_NR_IGNORE   (-2)
46
47#ifdef __cplusplus
48extern "C" {
49#endif /* __cplusplus */
50
51extern const char *libsensors_version;
52
53typedef struct sensors_bus_id {
54        short type;
55        short nr;
56} sensors_bus_id;
57
58/* A chip name is encoded in this structure */
59typedef struct sensors_chip_name {
60        char *prefix;
61        sensors_bus_id bus;
62        int addr;
63        char *path;
64} sensors_chip_name;
65
66/* Load the configuration file and the detected chips list. If this
67   returns a value unequal to zero, you are in trouble; you can not
68   assume anything will be initialized properly. If you want to
69   reload the configuration file, call sensors_cleanup() below before
70   calling sensors_init() again. */
71int sensors_init(FILE *input);
72
73/* Clean-up function: You can't access anything after
74   this, until the next sensors_init() call! */
75void sensors_cleanup(void);
76
77/* Parse a chip name to the internal representation. Return 0 on success, <0
78   on error. */
79int sensors_parse_chip_name(const char *orig_name, sensors_chip_name *res);
80
81/* Print a chip name from its internal representation. Note that chip should
82   not contain wildcard values! Return the number of characters printed on
83   success (same as snprintf), <0 on error. */
84int sensors_snprintf_chip_name(char *str, size_t size,
85                               const sensors_chip_name *chip);
86
87/* This function returns the adapter name of a bus,
88   as used within the sensors_chip_name structure. If it could not be found,
89   it returns NULL */
90const char *sensors_get_adapter_name(const sensors_bus_id *bus);
91
92typedef struct sensors_feature sensors_feature;
93
94/* Look up the label for a given feature. Note that chip should not
95   contain wildcard values! The returned string is newly allocated (free it
96   yourself). On failure, NULL is returned.
97   If no label exists for this feature, its name is returned itself. */
98char *sensors_get_label(const sensors_chip_name *name,
99                        const sensors_feature *feature);
100
101/* Read the value of a subfeature of a certain chip. Note that chip should not
102   contain wildcard values! This function will return 0 on success, and <0
103   on failure.  */
104int sensors_get_value(const sensors_chip_name *name, int subfeat_nr,
105                      double *value);
106
107/* Set the value of a subfeature of a certain chip. Note that chip should not
108   contain wildcard values! This function will return 0 on success, and <0
109   on failure. */
110int sensors_set_value(const sensors_chip_name *name, int subfeat_nr,
111                      double value);
112
113/* Execute all set statements for this particular chip. The chip may contain
114   wildcards!  This function will return 0 on success, and <0 on failure. */
115int sensors_do_chip_sets(const sensors_chip_name *name);
116
117/* This function returns all detected chips that match a given chip name,
118   one by one. If no chip name is provided, all detected chips are returned.
119   To start at the beginning of the list, use 0 for nr; NULL is returned if
120   we are at the end of the list. Do not try to change these chip names, as
121   they point to internal structures! */
122const sensors_chip_name *sensors_get_detected_chips(const sensors_chip_name
123                                                    *match, int *nr);
124
125/* These defines are used in the flags field of sensors_subfeature */
126#define SENSORS_MODE_R                  1
127#define SENSORS_MODE_W                  2
128#define SENSORS_COMPUTE_MAPPING         4
129
130typedef enum sensors_feature_type {
131        SENSORS_FEATURE_IN              = 0x00,
132        SENSORS_FEATURE_FAN             = 0x01,
133        SENSORS_FEATURE_TEMP            = 0x02,
134        SENSORS_FEATURE_VID             = 0x10,
135        SENSORS_FEATURE_BEEP_ENABLE     = 0x18,
136        SENSORS_FEATURE_UNKNOWN         = INT_MAX,
137} sensors_feature_type;
138
139/* All the sensor types (in, fan, temp, vid) are a multiple of 0x100 apart,
140   and sensor subfeatures which have no compute mapping have bit 7 set. */
141typedef enum sensors_subfeature_type {
142        SENSORS_SUBFEATURE_IN_INPUT = SENSORS_FEATURE_IN << 8,
143        SENSORS_SUBFEATURE_IN_MIN,
144        SENSORS_SUBFEATURE_IN_MAX,
145        SENSORS_SUBFEATURE_IN_ALARM = (SENSORS_FEATURE_IN << 8) | 0x80,
146        SENSORS_SUBFEATURE_IN_MIN_ALARM,
147        SENSORS_SUBFEATURE_IN_MAX_ALARM,
148        SENSORS_SUBFEATURE_IN_BEEP,
149
150        SENSORS_SUBFEATURE_FAN_INPUT = SENSORS_FEATURE_FAN << 8,
151        SENSORS_SUBFEATURE_FAN_MIN,
152        SENSORS_SUBFEATURE_FAN_ALARM = (SENSORS_FEATURE_FAN << 8) | 0x80,
153        SENSORS_SUBFEATURE_FAN_FAULT,
154        SENSORS_SUBFEATURE_FAN_DIV,
155        SENSORS_SUBFEATURE_FAN_BEEP,
156
157        SENSORS_SUBFEATURE_TEMP_INPUT = SENSORS_FEATURE_TEMP << 8,
158        SENSORS_SUBFEATURE_TEMP_MAX,
159        SENSORS_SUBFEATURE_TEMP_MAX_HYST,
160        SENSORS_SUBFEATURE_TEMP_MIN,
161        SENSORS_SUBFEATURE_TEMP_CRIT,
162        SENSORS_SUBFEATURE_TEMP_CRIT_HYST,
163        SENSORS_SUBFEATURE_TEMP_ALARM = (SENSORS_FEATURE_TEMP << 8) | 0x80,
164        SENSORS_SUBFEATURE_TEMP_MAX_ALARM,
165        SENSORS_SUBFEATURE_TEMP_MIN_ALARM,
166        SENSORS_SUBFEATURE_TEMP_CRIT_ALARM,
167        SENSORS_SUBFEATURE_TEMP_FAULT,
168        SENSORS_SUBFEATURE_TEMP_TYPE,
169        SENSORS_SUBFEATURE_TEMP_OFFSET,
170        SENSORS_SUBFEATURE_TEMP_BEEP,
171
172        SENSORS_SUBFEATURE_VID = SENSORS_FEATURE_VID << 8,
173
174        SENSORS_SUBFEATURE_BEEP_ENABLE = SENSORS_FEATURE_BEEP_ENABLE << 8,
175
176        SENSORS_SUBFEATURE_UNKNOWN = INT_MAX,
177} sensors_subfeature_type;
178
179/* Data about a single chip feature (or category leader) */
180struct sensors_feature {
181        char *name;
182        int number;
183        sensors_feature_type type;
184        /* Members below are for libsensors internal use only */
185        int first_subfeature;
186        int padding1;
187};
188
189/* Data about a single chip subfeature:
190   name is the string name used to refer to this subfeature (in config files)
191   number is the internal subfeature number, used in many functions to refer
192     to this subfeature
193   type is the subfeature type
194   mapping is the number of a main feature this subfeature belongs to
195     (for example subfeatures fan1_input, fan1_min, fan1_div and fan1_alarm
196      are mapped to main feature fan1)
197   flags is a bitfield, its value is a combination of SENSORS_MODE_R (readable),
198     SENSORS_MODE_W (writable) and SENSORS_COMPUTE_MAPPING (affected by the
199     computation rules of the main feature) */
200typedef struct sensors_subfeature {
201        char *name;
202        int number;
203        sensors_subfeature_type type;
204        int mapping;
205        unsigned int flags;
206} sensors_subfeature;
207
208/* This returns all main features of a specific chip. nr is an internally
209   used variable. Set it to zero to start at the begin of the list. If no
210   more features are found NULL is returned.
211   Do not try to change the returned structure; you will corrupt internal
212   data structures. */
213const sensors_feature *
214sensors_get_features(const sensors_chip_name *name, int *nr);
215
216/* This returns all subfeatures of a given main feature. nr is an internally
217   used variable. Set it to zero to start at the begin of the list. If no
218   more features are found NULL is returned.
219   Do not try to change the returned structure; you will corrupt internal
220   data structures. */
221const sensors_subfeature *
222sensors_get_all_subfeatures(const sensors_chip_name *name,
223                            const sensors_feature *feature, int *nr);
224
225/* This returns the subfeature of the given type for a given main feature,
226   if it exists, NULL otherwise.
227   Do not try to change the returned structure; you will corrupt internal
228   data structures. */
229const sensors_subfeature *
230sensors_get_subfeature(const sensors_chip_name *name,
231                       const sensors_feature *feature,
232                       sensors_subfeature_type type);
233
234#ifdef __cplusplus
235}
236#endif /* __cplusplus */
237
238#endif /* def LIB_SENSORS_ERROR_H */
Note: See TracBrowser for help on using the browser.