forked from enlightenment/enlightenment
No more limits to the number of I2C temperatures allowed.
SVN revision: 28147
This commit is contained in:
parent
07d6799234
commit
c604c7368d
|
@ -125,24 +125,23 @@ _fill_data(E_Config_Dialog_Data *cfdata)
|
||||||
case SENSOR_TYPE_LINUX_MACMINI:
|
case SENSOR_TYPE_LINUX_MACMINI:
|
||||||
break;
|
break;
|
||||||
case SENSOR_TYPE_LINUX_I2C:
|
case SENSOR_TYPE_LINUX_I2C:
|
||||||
therms = ecore_file_ls("/sys/bus/i2c/devices");
|
therms = temperature_get_i2c_files();
|
||||||
if (therms)
|
if (therms)
|
||||||
{
|
{
|
||||||
char *therm_name;
|
char *name;
|
||||||
|
|
||||||
while ((therm_name = ecore_list_next(therms)))
|
while ((name = ecore_list_next(therms)))
|
||||||
{
|
{
|
||||||
int i;
|
if (ecore_file_exists(name))
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
|
||||||
/* If there are ever more than 9 temperatures, then just increase this number. */
|
sprintf(path, "%s", ecore_file_get_file(name));
|
||||||
for (i = 0; i < 9; i++)
|
len = strlen(path);
|
||||||
{
|
if (len > 6)
|
||||||
sprintf(path, "/sys/bus/i2c/devices/%s/temp%d_input", therm_name, i);
|
path[len - 6] = '\0';
|
||||||
if (ecore_file_exists(path))
|
|
||||||
{
|
|
||||||
sprintf(path, "temp%d", i);
|
|
||||||
ecore_list_append(cfdata->sensors, strdup(path));
|
ecore_list_append(cfdata->sensors, strdup(path));
|
||||||
}
|
/* TODO: Track down the user friendly names and display them instead. */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ecore_list_destroy(therms);
|
ecore_list_destroy(therms);
|
||||||
|
|
|
@ -238,29 +238,26 @@ _temperature_sensor_init(Config_Face *inst)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
therms = ecore_file_ls("/sys/bus/i2c/devices");
|
therms = temperature_get_i2c_files();
|
||||||
if (therms)
|
if (therms)
|
||||||
{
|
{
|
||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
while ((name = ecore_list_next(therms)))
|
if ((name = ecore_list_next(therms)))
|
||||||
{
|
{
|
||||||
int i;
|
if (ecore_file_exists(name))
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
|
||||||
/* If there are ever more than 9 temperatures, then just increase this number. */
|
sprintf(path, "%s", ecore_file_get_file(name));
|
||||||
for (i = 0; i < 9; i++)
|
len = strlen(path);
|
||||||
{
|
if (len > 6)
|
||||||
sprintf(path, "/sys/bus/i2c/devices/%s/temp%d_input", name, i);
|
path[len - 6] = '\0';
|
||||||
if (ecore_file_exists(path))
|
|
||||||
{
|
|
||||||
sprintf(path, "temp%d", i);
|
|
||||||
inst->sensor_type = SENSOR_TYPE_LINUX_I2C;
|
inst->sensor_type = SENSOR_TYPE_LINUX_I2C;
|
||||||
|
inst->sensor_path = evas_stringshare_add(name);
|
||||||
inst->sensor_name = evas_stringshare_add(path);
|
inst->sensor_name = evas_stringshare_add(path);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (inst->sensor_type) break;
|
|
||||||
}
|
|
||||||
ecore_list_destroy(therms);
|
ecore_list_destroy(therms);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -304,6 +301,7 @@ _temperature_sensor_init(Config_Face *inst)
|
||||||
if (ecore_file_exists(path))
|
if (ecore_file_exists(path))
|
||||||
{
|
{
|
||||||
inst->sensor_path = evas_stringshare_add(path);
|
inst->sensor_path = evas_stringshare_add(path);
|
||||||
|
/* We really only care about the first one for the default. */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -527,6 +525,58 @@ temperature_face_update_config(Config_Face *inst)
|
||||||
ecore_timer_add(inst->poll_time, _temperature_cb_check, inst);
|
ecore_timer_add(inst->poll_time, _temperature_cb_check, inst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ecore_List *
|
||||||
|
temperature_get_i2c_files()
|
||||||
|
{
|
||||||
|
Ecore_List *result;
|
||||||
|
Ecore_List *therms;
|
||||||
|
char path[PATH_MAX];
|
||||||
|
|
||||||
|
result = ecore_list_new();
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
ecore_list_set_free_cb(result, free);
|
||||||
|
|
||||||
|
/* Look through all the i2c devices. */
|
||||||
|
therms = ecore_file_ls("/sys/bus/i2c/devices");
|
||||||
|
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))
|
||||||
|
{
|
||||||
|
char *f;
|
||||||
|
|
||||||
|
sprintf(path, "/sys/bus/i2c/devices/%s/%s", name, file);
|
||||||
|
f = strdup(path);
|
||||||
|
if (f)
|
||||||
|
ecore_list_append(result, f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ecore_list_destroy(files);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ecore_list_destroy(therms);
|
||||||
|
}
|
||||||
|
ecore_list_goto_first(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
/**/
|
/**/
|
||||||
/* module setup */
|
/* module setup */
|
||||||
|
|
|
@ -64,6 +64,7 @@ EAPI int e_modapi_about (E_Module *m);
|
||||||
|
|
||||||
void config_temperature_module(Config_Face *inst);
|
void config_temperature_module(Config_Face *inst);
|
||||||
void temperature_face_update_config(Config_Face *inst);
|
void temperature_face_update_config(Config_Face *inst);
|
||||||
|
Ecore_List *temperature_get_i2c_files(void);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue