Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/modules/temperature


Modified Files:
        e_mod_config.c e_mod_main.c e_mod_main.h tempget.c 


Log Message:


temp module patches to make it work again.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/temperature/e_mod_config.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- e_mod_config.c      11 Jan 2008 07:33:56 -0000      1.36
+++ e_mod_config.c      6 Feb 2008 00:13:25 -0000       1.37
@@ -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;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/temperature/e_mod_main.c,v
retrieving revision 1.90
retrieving revision 1.91
diff -u -3 -r1.90 -r1.91
--- e_mod_main.c        22 Jan 2008 06:21:02 -0000      1.90
+++ e_mod_main.c        6 Feb 2008 00:13:25 -0000       1.91
@@ -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;
 }
 
===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/temperature/e_mod_main.h,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -3 -r1.32 -r1.33
--- e_mod_main.h        11 Jan 2008 07:33:56 -0000      1.32
+++ e_mod_main.h        6 Feb 2008 00:13:25 -0000       1.33
@@ -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
===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/temperature/tempget.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- tempget.c   22 Jan 2008 06:21:02 -0000      1.4
+++ tempget.c   6 Feb 2008 00:13:25 -0000       1.5
@@ -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",
@@ -283,6 +341,25 @@
        break;
       case SENSOR_TYPE_LINUX_INTELCORETEMP:
       case SENSOR_TYPE_LINUX_I2C:
+       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_PCI:
        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-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to