-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Carsten Haitzler (The Rasterman) wrote:
| On Tue, 05 Feb 2008 00:37:17 +0100 Fabio Strozzi <[EMAIL PROTECTED]>
| babbled:
|
| no attachment :(
Damn! SF filtered it!
Try now or get it from there:
https://fstrozzi.web.cs.unibo.it/temperature.patch
Regards
- --
Fabio G. Strozzi ~ http://fstrozzi.web.cs.unibo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.7 (GNU/Linux)
iD8DBQFHqKtxB3MPiq3KlccRAhR1AJ9RmQE45Dm36bGDlGd+CDBsTVkH2ACfXi3a
gKOrgutXD7HpJIS2JEjKFXs=
=Yy8z
-----END PGP SIGNATURE-----
diff -Naur -x .libs -x .deps -x Makefile -x '*.in' -x CVS -x '*.am' -x '*.la'
-x '*.o' -x '*.edj' -x '*.desktop' -x tempget -x '*.lo'
/opt/e17/src/e17/apps/e/src/modules/temperature/e_mod_config.c ./e_mod_config.c
--- /opt/e17/src/e17/apps/e/src/modules/temperature/e_mod_config.c
2008-01-11 08:33:56.000000000 +0100
+++ ./e_mod_config.c 2008-02-03 11:50:12.000000000 +0100
@@ -125,7 +125,43 @@
case SENSOR_TYPE_LINUX_INTELCORETEMP:
break;
case SENSOR_TYPE_LINUX_I2C:
- therms = temperature_get_i2c_files();
+ therms = temperature_get_bus_files("i2c");
+ if (therms)
+ {
+ char *name;
+
+ while ((name = ecore_list_next(therms)))
+ {
+ if (ecore_file_exists(name))
+ {
+ int len;
+
+ sprintf(path, "%s", ecore_file_file_get(name));
+ len = strlen(path);
+ if (len > 6)
+ path[len - 6] = '\0';
+ ecore_list_append(cfdata->sensors, strdup(path));
+ /* TODO: Track down the user friendly names and display
them instead.
+ * User friendly names are not available on the system,
lm-sensors
+ * contains a database in /etc/sensors.conf, but the
format may change,
+ * so the best way to use that database is thru
libsensors, but we
+ * don't want to add any more library dependencies.
+ */
+ }
+ }
+ ecore_list_destroy(therms);
+ }
+
+ ecore_list_first_goto(cfdata->sensors);
+ while ((name = ecore_list_next(cfdata->sensors)))
+ {
+ if (!strcmp(cfdata->inst->sensor_name, name))
+ break;
+ cfdata->sensor++;
+ }
+ break;
+ case SENSOR_TYPE_LINUX_PCI:
+ therms = temperature_get_bus_files("pci");
if (therms)
{
char *name;
diff -Naur -x .libs -x .deps -x Makefile -x '*.in' -x CVS -x '*.am' -x '*.la'
-x '*.o' -x '*.edj' -x '*.desktop' -x tempget -x '*.lo'
/opt/e17/src/e17/apps/e/src/modules/temperature/e_mod_main.c ./e_mod_main.c
--- /opt/e17/src/e17/apps/e/src/modules/temperature/e_mod_main.c
2008-01-22 07:21:02.000000000 +0100
+++ ./e_mod_main.c 2008-02-03 11:52:38.000000000 +0100
@@ -407,54 +407,57 @@
}
Ecore_List *
-temperature_get_i2c_files()
+temperature_get_bus_files(const char* bus)
{
Ecore_List *result;
Ecore_List *therms;
char path[PATH_MAX];
-
+ char busdir[PATH_MAX];
+
result = ecore_list_new();
if (result)
{
- ecore_list_free_cb_set(result, free);
-
- /* Look through all the i2c devices. */
- therms = ecore_file_ls("/sys/bus/i2c/devices");
- if (therms)
- {
- char *name;
-
+ ecore_list_free_cb_set(result, free);
+ snprintf(busdir, sizeof(busdir), "/sys/bus/%s/devices", bus);
+ /* Look through all the devices for the given bus. */
+ therms = ecore_file_ls(busdir);
+ if (therms)
+ {
+ char *name;
+
while ((name = ecore_list_next(therms)))
{
- Ecore_List *files;
-
- /* Search each device for temp*_input, these should be i2c
temperature devices. */
- sprintf(path, "/sys/bus/i2c/devices/%s", name);
- files = ecore_file_ls(path);
- if (files)
- {
- char *file;
-
- while ((file = ecore_list_next(files)))
- {
- if ((strncmp("temp", file, 4) == 0) &&
(strcmp("_input", &file[strlen(file) - 6]) == 0))
+ Ecore_List *files;
+
+ /* Search each device for temp*_input, these should be
+ * temperature devices. */
+ snprintf(path, sizeof(path),
+ "%s/%s", busdir, name);
+ files = ecore_file_ls(path);
+ if (files)
+ {
+ char *file;
+
+ while ((file = ecore_list_next(files)))
+ {
+ if ((!strncmp("temp", file, 4)) &&
+ (!strcmp("_input", &file[strlen(file) - 6])))
{
- char *f;
-
- sprintf(path, "/sys/bus/i2c/devices/%s/%s",
name, file);
- f = strdup(path);
- if (f)
- ecore_list_append(result, f);
+ char *f;
+
+ snprintf(path, sizeof(path),
+ "%s/%s/%s", busdir, name, file);
+ f = strdup(path);
+ if (f) ecore_list_append(result, f);
}
- }
- ecore_list_destroy(files);
+ }
+ ecore_list_destroy(files);
}
}
ecore_list_destroy(therms);
- }
- ecore_list_first_goto(result);
+ }
+ ecore_list_first_goto(result);
}
-
return result;
}
diff -Naur -x .libs -x .deps -x Makefile -x '*.in' -x CVS -x '*.am' -x '*.la'
-x '*.o' -x '*.edj' -x '*.desktop' -x tempget -x '*.lo'
/opt/e17/src/e17/apps/e/src/modules/temperature/e_mod_main.h ./e_mod_main.h
--- /opt/e17/src/e17/apps/e/src/modules/temperature/e_mod_main.h
2008-01-11 08:33:56.000000000 +0100
+++ ./e_mod_main.h 2008-02-03 10:48:28.000000000 +0100
@@ -21,6 +21,7 @@
SENSOR_TYPE_LINUX_MACMINI,
SENSOR_TYPE_LINUX_I2C,
SENSOR_TYPE_LINUX_ACPI,
+ SENSOR_TYPE_LINUX_PCI,
SENSOR_TYPE_LINUX_PBOOK,
SENSOR_TYPE_LINUX_INTELCORETEMP
} Sensor_Type;
@@ -69,7 +70,7 @@
void config_temperature_module(Config_Face *inst);
void temperature_face_update_config(Config_Face *inst);
-Ecore_List *temperature_get_i2c_files(void);
+Ecore_List *temperature_get_bus_files(const char* bus);
#endif
diff -Naur -x .libs -x .deps -x Makefile -x '*.in' -x CVS -x '*.am' -x '*.la'
-x '*.o' -x '*.edj' -x '*.desktop' -x tempget -x '*.lo'
/opt/e17/src/e17/apps/e/src/modules/temperature/tempget.c ./tempget.c
--- /opt/e17/src/e17/apps/e/src/modules/temperature/tempget.c 2008-01-22
07:21:02.000000000 +0100
+++ ./tempget.c 2008-02-03 11:18:10.000000000 +0100
@@ -26,18 +26,20 @@
static int poll_cb(void *data);
Ecore_List *
-temperature_get_i2c_files()
+temperature_get_bus_files(const char* bus)
{
Ecore_List *result;
Ecore_List *therms;
char path[PATH_MAX];
+ char busdir[PATH_MAX];
result = ecore_list_new();
if (result)
{
ecore_list_free_cb_set(result, free);
- /* Look through all the i2c devices. */
- therms = ecore_file_ls("/sys/bus/i2c/devices");
+ snprintf(busdir, sizeof(busdir), "/sys/bus/%s/devices", bus);
+ /* Look through all the devices for the given bus. */
+ therms = ecore_file_ls(busdir);
if (therms)
{
char *name;
@@ -47,9 +49,9 @@
Ecore_List *files;
/* Search each device for temp*_input, these should be
- * i2c temperature devices. */
+ * temperature devices. */
snprintf(path, sizeof(path),
- "/sys/bus/i2c/devices/%s", name);
+ "%s/%s", busdir, name);
files = ecore_file_ls(path);
if (files)
{
@@ -63,8 +65,7 @@
char *f;
snprintf(path, sizeof(path),
- "/sys/bus/i2c/devices/%s/%s",
- name, file);
+ "%s/%s/%s", busdir, name, file);
f = strdup(path);
if (f) ecore_list_append(result, f);
}
@@ -133,7 +134,8 @@
}
else
{
- therms = temperature_get_i2c_files();
+ // try the i2c bus
+ therms = temperature_get_bus_files("i2c");
if (therms)
{
char *name;
@@ -151,10 +153,44 @@
sensor_type = SENSOR_TYPE_LINUX_I2C;
sensor_path = strdup(name);
sensor_name = strdup(path);
+ printf("sensor type = i2c\n"
+ "sensor path = %s\n"
+ "sensor name = %s\n",
+ sensor_path, sensor_name);
}
}
ecore_list_destroy(therms);
}
+ if (!sensor_path)
+ {
+ // try the pci bus
+ therms = temperature_get_bus_files("pci");
+ if (therms)
+ {
+ char *name;
+
+ if ((name = ecore_list_next(therms)))
+ {
+ if (ecore_file_exists(name))
+ {
+ int len;
+
+ snprintf(path, sizeof(path),
+ "%s", ecore_file_file_get(name));
+ len = strlen(path);
+ if (len > 6) path[len - 6] = '\0';
+ sensor_type = SENSOR_TYPE_LINUX_PCI;
+ sensor_path = strdup(name);
+ sensor_name = strdup(path);
+ printf("sensor type = pci\n"
+ "sensor path = %s\n"
+ "sensor name = %s\n",
+ sensor_path, sensor_name);
+ }
+ }
+ ecore_list_destroy(therms);
+ }
+ }
}
}
#endif
@@ -208,6 +244,28 @@
ecore_list_destroy(therms);
}
break;
+ case SENSOR_TYPE_LINUX_PCI:
+ therms = ecore_file_ls("/sys/bus/pci/devices");
+ if (therms)
+ {
+ char *name;
+
+ while ((name = ecore_list_next(therms)))
+ {
+ snprintf(path, sizeof(path),
+ "/sys/bus/pci/devices/%s/%s_input",
+ name, sensor_name);
+ if (ecore_file_exists(path))
+ {
+ sensor_path = strdup(path);
+ /* We really only care about the first
+ * one for the default. */
+ break;
+ }
+ }
+ ecore_list_destroy(therms);
+ }
+ break;
case SENSOR_TYPE_LINUX_ACPI:
snprintf(path, sizeof(path),
"/proc/acpi/thermal_zone/%s/temperature",
@@ -301,6 +359,25 @@
else
goto error;
break;
+ case SENSOR_TYPE_LINUX_PCI:
+ f = fopen(sensor_path, "r");
+ if (f)
+ {
+ fgets(buf, sizeof(buf), f);
+ buf[sizeof(buf) - 1] = 0;
+
+ /* actually read the temp */
+ if (sscanf(buf, "%i", &temp) == 1)
+ ret = 1;
+ else
+ goto error;
+ /* Hack for temp */
+ temp = temp / 1000;
+ fclose(f);
+ }
+ else
+ goto error;
+ break;
case SENSOR_TYPE_LINUX_ACPI:
f = fopen(sensor_path, "r");
if (f)
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
enlightenment-users mailing list
enlightenment-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-users