1 diff -up xfce4-sensors-plugin-0.10.99.2/panel-plugin/middlelayer.c.lmsens3x xfce4-sensors-plugin-0.10.99.2/panel-plugin/middlelayer.c
2 --- xfce4-sensors-plugin-0.10.99.2/panel-plugin/middlelayer.c.lmsens3x 2007-10-28 16:21:52.000000000 +0100
3 +++ xfce4-sensors-plugin-0.10.99.2/panel-plugin/middlelayer.c 2007-11-23 22:58:34.000000000 +0100
4 @@ -110,6 +110,7 @@ refresh_all_chips (GPtrArray *chips )
5 }
6
7
8 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
9 void
10 categorize_sensor_type (t_chipfeature* chipfeature)
11 {
12 @@ -141,7 +142,7 @@ categorize_sensor_type (t_chipfeature* c
13
14 TRACE ("leaves categorize_sensor_type");
15 }
16 -
17 +#endif
18
19 int
20 sensors_get_feature_wrapper (t_chip *chip, int number, double *value)
21 @@ -153,7 +154,11 @@ sensors_get_feature_wrapper (t_chip *chi
22
23 if (chip->type==LMSENSOR ) {
24 #ifdef HAVE_LIBSENSORS
25 - return sensors_get_feature (*(chip->chip_name), number, value);
26 + #if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
27 + return sensors_get_feature (*(chip->chip_name), number, value);
28 + #else
29 + return sensors_get_value (chip->chip_name, number, value);
30 + #endif
31 #else
32 return -1;
33 #endif
34 diff -up xfce4-sensors-plugin-0.10.99.2/panel-plugin/lmsensors.c.lmsens3x xfce4-sensors-plugin-0.10.99.2/panel-plugin/lmsensors.c
35 --- xfce4-sensors-plugin-0.10.99.2/panel-plugin/lmsensors.c.lmsens3x 2007-10-20 19:40:40.000000000 +0200
36 +++ xfce4-sensors-plugin-0.10.99.2/panel-plugin/lmsensors.c 2007-11-23 22:59:15.000000000 +0100
37 @@ -47,12 +47,28 @@ t_chip *setup_chip (GPtrArray *chips, co
38 chip->chip_name = (sensors_chip_name *) g_malloc (sizeof(sensors_chip_name));
39 memcpy ( (void *) (chip->chip_name), (void *) name, sizeof(sensors_chip_name) );
40
41 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
42 chip->sensorId = g_strdup_printf ("%s-%x-%x", name->prefix, name->bus, name->addr);
43 +#else
44 + switch (name->bus.type) {
45 + case SENSORS_BUS_TYPE_I2C:
46 + case SENSORS_BUS_TYPE_SPI:
47 + chip->sensorId = g_strdup_printf ("%s-%x-%x", name->prefix,
48 + name->bus.nr, name->addr);
49 + break;
50 + default:
51 + chip->sensorId = g_strdup_printf ("%s-%x", name->prefix, name->addr);
52 + }
53 +#endif
54 chip->num_features=0;
55 chip->name = g_strdup (_("LM Sensors"));
56 chip->chip_features = g_ptr_array_new();
57
58 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
59 chip->description = g_strdup (sensors_get_adapter_name (num_sensorchips-1));
60 +#else
61 + chip->description = g_strdup (sensors_get_adapter_name (&name->bus));
62 +#endif
63
64 TRACE("leaves setup_chip");
65
66 @@ -71,14 +87,23 @@ void setup_chipfeature (t_chipfeature *c
67 chipfeature->address = number;
68 chipfeature->show = FALSE;
69
70 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
71 categorize_sensor_type (chipfeature);
72 +#endif
73
74 TRACE("leaves setup_chipfeature");
75 }
76
77
78 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
79 t_chipfeature *find_chipfeature (const sensors_chip_name *name, t_chip *chip, int number)
80 {
81 +#else
82 +t_chipfeature *find_chipfeature (const sensors_chip_name *name, t_chip *chip, const sensors_feature *feature)
83 +{
84 + const sensors_subfeature *sub_feature = NULL;
85 + int number = -1;
86 +#endif
87 int res;
88 double sensorFeature;
89 t_chipfeature *chipfeature;
90 @@ -87,6 +112,7 @@ t_chipfeature *find_chipfeature (cons
91
92 chipfeature = g_new0 (t_chipfeature, 1);
93
94 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
95 if (sensors_get_ignored (*(name), number)==1) {
96 res = sensors_get_label(*(name), number,
97 &(chipfeature->name));
98 @@ -95,6 +121,87 @@ t_chipfeature *find_chipfeature (cons
99 res = sensors_get_feature (*(name), number,
100 &sensorFeature);
101
102 +#else /* libsensors 4 code */
103 +
104 + switch (feature->type) {
105 + case SENSORS_FEATURE_IN:
106 + sub_feature = sensors_get_subfeature(name, feature,
107 + SENSORS_SUBFEATURE_IN_INPUT);
108 + if (!sub_feature)
109 + break;
110 +
111 + number = sub_feature->number;
112 + chipfeature->class = VOLTAGE;
113 + chipfeature->min_value = 2.8;
114 + chipfeature->max_value = 12.2;
115 +
116 + if ((sub_feature = sensors_get_subfeature(name, feature,
117 + SENSORS_SUBFEATURE_IN_MIN)) &&
118 + !sensors_get_value(name, sub_feature->number, &sensorFeature))
119 + chipfeature->min_value = sensorFeature;
120 +
121 + if ((sub_feature = sensors_get_subfeature(name, feature,
122 + SENSORS_SUBFEATURE_IN_MAX)) &&
123 + !sensors_get_value(name, sub_feature->number, &sensorFeature))
124 + chipfeature->max_value = sensorFeature;
125 +
126 + break;
127 +
128 + case SENSORS_FEATURE_FAN:
129 + sub_feature = sensors_get_subfeature(name, feature,
130 + SENSORS_SUBFEATURE_FAN_INPUT);
131 + if (!sub_feature)
132 + break;
133 +
134 + number = sub_feature->number;
135 + chipfeature->class = SPEED;
136 + chipfeature->min_value = 1000.0;
137 + chipfeature->max_value = 3500.0;
138 +
139 + if ((sub_feature = sensors_get_subfeature(name, feature,
140 + SENSORS_SUBFEATURE_FAN_MIN)) &&
141 + !sensors_get_value(name, sub_feature->number, &sensorFeature))
142 + chipfeature->min_value = sensorFeature;
143 +
144 + break;
145 +
146 + case SENSORS_FEATURE_TEMP:
147 + sub_feature = sensors_get_subfeature(name, feature,
148 + SENSORS_SUBFEATURE_TEMP_INPUT);
149 + if (!sub_feature)
150 + break;
151 +
152 + number = sub_feature->number;
153 + chipfeature->class = TEMPERATURE;
154 + chipfeature->min_value = 0.0;
155 + chipfeature->max_value = 80.0;
156 +
157 + if ((sub_feature = sensors_get_subfeature(name, feature,
158 + SENSORS_SUBFEATURE_TEMP_MIN)) &&
159 + !sensors_get_value(name, sub_feature->number, &sensorFeature))
160 + chipfeature->min_value = sensorFeature;
161 +
162 + if (((sub_feature = sensors_get_subfeature(name, feature,
163 + SENSORS_SUBFEATURE_TEMP_MAX)) ||
164 + (sub_feature = sensors_get_subfeature(name, feature,
165 + SENSORS_SUBFEATURE_TEMP_CRIT))) &&
166 + !sensors_get_value(name, sub_feature->number, &sensorFeature))
167 + chipfeature->max_value = sensorFeature;
168 + }
169 +
170 + if (number != -1) {
171 +
172 + chipfeature->name = sensors_get_label(name, feature);
173 +
174 + if (!chipfeature->name)
175 + chipfeature->name = feature->name;
176 +
177 + if (chipfeature->name) {
178 + res = sensors_get_value (name, number,
179 + &sensorFeature);
180 +
181 +#endif /* libsensor3 / libsensors4 code */
182 +
183 if (res==0) {
184 setup_chipfeature (chipfeature, number, sensorFeature);
185 chip->num_features++;
186 @@ -103,6 +210,7 @@ t_chipfeature *find_chipfeature (cons
187 }
188 }
189 }
190 + g_free(chipfeature);
191
192 TRACE("leaves find_chipfeature with null");
193 return NULL;
194 @@ -114,8 +222,9 @@ int initialize_libsensors (GPtrArray *ch
195 int sensorsInit, nr1, nr2, num_sensorchips; /* , numchips; */
196 t_chip *chip;
197 t_chipfeature *chipfeature; /* , *furtherchipfeature; */
198 - FILE *file;
199 const sensors_chip_name *detected_chip;
200 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
201 + FILE *file;
202 const sensors_feature_data *sfd;
203
204 TRACE("enters initialize_libsensors");
205 @@ -167,6 +276,45 @@ int initialize_libsensors (GPtrArray *ch
206 TRACE ("leaves initialize_libsensors with -1");
207 return -1;
208 }
209 +#else
210 + const sensors_feature *sfd;
211 + TRACE("enters initialize_libsensors");
212 +
213 + sensorsInit = sensors_init(NULL);
214 + if (sensorsInit != 0)
215 + {
216 + g_printf(_("Error: Could not connect to sensors!"));
217 + /* FIXME: better popup window? write to special logfile? */
218 + return -2;
219 + }
220 +
221 + num_sensorchips = 0;
222 + detected_chip = sensors_get_detected_chips (NULL, &num_sensorchips);
223 + /* iterate over chips on mainboard */
224 + while (detected_chip!=NULL)
225 + {
226 + chip = setup_chip (chips, detected_chip, num_sensorchips);
227 +
228 + nr1 = 0;
229 + nr2 = 0;
230 + /* iterate over chip features, i.e. id, cpu temp, mb temp... */
231 + /* numchips = get_number_chip_features (detected_chip); */
232 + sfd = sensors_get_features (detected_chip, &nr1);
233 + while (sfd != NULL)
234 + {
235 + chipfeature = find_chipfeature (detected_chip, chip, sfd);
236 + if (chipfeature!=NULL) {
237 + g_ptr_array_add (chip->chip_features, chipfeature);
238 + }
239 + sfd = sensors_get_features (detected_chip, &nr1);
240 + }
241 +
242 + detected_chip = sensors_get_detected_chips (NULL, &num_sensorchips);
243 + } /* end while sensor chipNames */
244 +
245 + TRACE ("leaves initialize_libsensors with 1");
246 + return 1;
247 +#endif
248 }
249
250
|