forked from enlightenment/enlightenment
parent
12a0d6d9bd
commit
4cb6863149
|
@ -59,6 +59,9 @@ static void _battery_face_level_set(Battery_Face *ef, double level);
|
||||||
static void _battery_face_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item *mi);
|
static void _battery_face_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||||
static void _battery_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi);
|
static void _battery_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||||
|
|
||||||
|
static int _battery_int_get(char *buf);
|
||||||
|
static char *_battery_string_get(char *buf);
|
||||||
|
|
||||||
static E_Config_DD *conf_edd;
|
static E_Config_DD *conf_edd;
|
||||||
static E_Config_DD *conf_face_edd;
|
static E_Config_DD *conf_face_edd;
|
||||||
|
|
||||||
|
@ -868,6 +871,7 @@ _battery_linux_acpi_check(Battery *ef)
|
||||||
while ((name = ecore_list_next(bats)))
|
while ((name = ecore_list_next(bats)))
|
||||||
{
|
{
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
char *tmp;
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "/proc/acpi/battery/%s/info", name);
|
snprintf(buf, sizeof(buf), "/proc/acpi/battery/%s/info", name);
|
||||||
f = fopen(buf, "r");
|
f = fopen(buf, "r");
|
||||||
|
@ -880,14 +884,22 @@ _battery_linux_acpi_check(Battery *ef)
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
/* design capacity */
|
/* design capacity */
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
sscanf(buf2, "%*[^:]: %250s %*s", buf);
|
tmp = _battery_string_get(buf2);
|
||||||
if (!strcmp(buf, "unknown")) design_cap_unknown = 1;
|
if (tmp)
|
||||||
else sscanf(buf2, "%*[^:]: %i %*s", &design_cap);
|
{
|
||||||
|
if (!strcmp(tmp, "unknown")) design_cap_unknown = 1;
|
||||||
|
else design_cap = atoi(tmp);
|
||||||
|
free(tmp);
|
||||||
|
}
|
||||||
/* last full capacity */
|
/* last full capacity */
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
sscanf(buf2, "%*[^:]: %250s %*s", buf);
|
tmp = _battery_string_get(buf2);
|
||||||
if (!strcmp(buf, "unknown")) last_full_unknown = 1;
|
if (tmp)
|
||||||
else sscanf(buf2, "%*[^:]: %i %*s", &last_full);
|
{
|
||||||
|
if (!strcmp(tmp, "unknown")) last_full_unknown = 1;
|
||||||
|
else last_full = atoi(tmp);
|
||||||
|
free(tmp);
|
||||||
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
bat_max += design_cap;
|
bat_max += design_cap;
|
||||||
bat_filled += last_full;
|
bat_filled += last_full;
|
||||||
|
@ -896,44 +908,64 @@ _battery_linux_acpi_check(Battery *ef)
|
||||||
f = fopen(buf, "r");
|
f = fopen(buf, "r");
|
||||||
if (f)
|
if (f)
|
||||||
{
|
{
|
||||||
char present[256];
|
char *present;
|
||||||
char capacity_state[256];
|
char *capacity_state;
|
||||||
char charging_state[256];
|
char *charging_state;
|
||||||
|
char *tmp;
|
||||||
int rate = 1;
|
int rate = 1;
|
||||||
int level = 0;
|
int level = 0;
|
||||||
|
|
||||||
/* present */
|
/* present */
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
sscanf(buf2, "%*[^:]: %250s", present);
|
present = _battery_string_get(buf2);
|
||||||
/* capacity state */
|
/* capacity state */
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
sscanf(buf2, "%*[^:]: %250s", capacity_state);
|
capacity_state = _battery_string_get(buf2);
|
||||||
/* charging state */
|
/* charging state */
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
sscanf(buf2, "%*[^:]: %250s", charging_state);
|
charging_state = _battery_string_get(buf2);
|
||||||
/* present rate */
|
/* present rate */
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
sscanf(buf2, "%*[^:]: %250s %*s", buf);
|
tmp = _battery_string_get(buf2);
|
||||||
if (!strcmp(buf, "unknown")) rate_unknown = 1;
|
if (tmp)
|
||||||
else sscanf(buf2, "%*[^:]: %i %*s", &rate);
|
{
|
||||||
|
if (!strcmp(tmp, "unknown")) rate_unknown = 1;
|
||||||
|
else rate = atoi(tmp);
|
||||||
|
free(tmp);
|
||||||
|
}
|
||||||
/* remaining capacity */
|
/* remaining capacity */
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
sscanf(buf2, "%*[^:]: %250s %*s", buf);
|
tmp = _battery_string_get(buf2);
|
||||||
if (!strcmp(buf, "unknown")) level_unknown = 1;
|
if (tmp)
|
||||||
else sscanf(buf2, "%*[^:]: %i %*s", &level);
|
{
|
||||||
|
if (!strcmp(tmp, "unknown")) level_unknown = 1;
|
||||||
|
else level = atoi(tmp);
|
||||||
|
free(tmp);
|
||||||
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
if (!strcmp(present, "yes")) battery++;
|
if (present)
|
||||||
if (!strcmp(charging_state, "discharging"))
|
|
||||||
{
|
{
|
||||||
discharging++;
|
if (!strcmp(present, "yes")) battery++;
|
||||||
if ((rate == 0) && (rate_unknown == 0)) rate_unknown = 1;
|
free(present);
|
||||||
}
|
}
|
||||||
if (!strcmp(charging_state, "charging"))
|
if (charging_state)
|
||||||
{
|
{
|
||||||
charging++;
|
if (!strcmp(charging_state, "discharging"))
|
||||||
if ((rate == 0) && (rate_unknown == 0)) rate_unknown = 1;
|
{
|
||||||
|
discharging++;
|
||||||
|
if ((rate == 0) && (rate_unknown == 0)) rate_unknown = 1;
|
||||||
|
}
|
||||||
|
else if (!strcmp(charging_state, "charging"))
|
||||||
|
{
|
||||||
|
charging++;
|
||||||
|
if ((rate == 0) && (rate_unknown == 0)) rate_unknown = 1;
|
||||||
|
}
|
||||||
|
else if (!strcmp(charging_state, "charged"))
|
||||||
|
rate_unknown = 0;
|
||||||
|
free(charging_state);
|
||||||
}
|
}
|
||||||
if (!strcmp(charging_state, "charged")) rate_unknown = 0;
|
E_FREE(capacity_state);
|
||||||
|
|
||||||
bat_drain += rate;
|
bat_drain += rate;
|
||||||
bat_level += level;
|
bat_level += level;
|
||||||
}
|
}
|
||||||
|
@ -1153,7 +1185,7 @@ _battery_linux_powerbook_check(Battery *ef)
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
/* Read ac */
|
/* Read ac */
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
sscanf(buf2, "%*[^:]: %d", &ac);
|
ac = _battery_int_get(buf2);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1177,20 +1209,20 @@ _battery_linux_powerbook_check(Battery *ef)
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
/* Read charge */
|
/* Read charge */
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
sscanf(buf2, "%*[^:]: %d", &tmp);
|
tmp = _battery_int_get(buf2);
|
||||||
charge += tmp;
|
charge += tmp;
|
||||||
/* Read max charge */
|
/* Read max charge */
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
sscanf(buf2, "%*[^:]: %d", &tmp);
|
tmp = _battery_int_get(buf2);
|
||||||
max_charge += tmp;
|
max_charge += tmp;
|
||||||
/* Read current */
|
/* Read current */
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
sscanf(buf2, "%*[^:]: %d", ¤t);
|
current = _battery_int_get(buf2);
|
||||||
/* Skip voltage */
|
/* Skip voltage */
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
/* Get time remaining */
|
/* Get time remaining */
|
||||||
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
|
||||||
sscanf(buf2, "%*[^:]: %d", &time);
|
time = _battery_int_get(buf2);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
battery++;
|
battery++;
|
||||||
|
@ -1723,3 +1755,33 @@ _battery_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||||
face = data;
|
face = data;
|
||||||
e_gadman_mode_set(face->gmc->gadman, E_GADMAN_MODE_EDIT);
|
e_gadman_mode_set(face->gmc->gadman, E_GADMAN_MODE_EDIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_battery_int_get(char *buf)
|
||||||
|
{
|
||||||
|
char *p, *q;
|
||||||
|
|
||||||
|
p = strchr(buf, ':');
|
||||||
|
if (!p) return 0;
|
||||||
|
p++;
|
||||||
|
while (*p == ' ') p++;
|
||||||
|
q = p;
|
||||||
|
while ((*q != ' ') && (*q != '\n')) q++;
|
||||||
|
if (q) *q = 0;
|
||||||
|
return atoi(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
_battery_string_get(char *buf)
|
||||||
|
{
|
||||||
|
char *p, *q;
|
||||||
|
|
||||||
|
p = strchr(buf, ':');
|
||||||
|
if (!p) return NULL;
|
||||||
|
p++;
|
||||||
|
while (*p == ' ') p++;
|
||||||
|
q = p;
|
||||||
|
while ((*q != ' ') && (*q != '\n')) q++;
|
||||||
|
if (q) *q = 0;
|
||||||
|
return strdup(p);
|
||||||
|
}
|
||||||
|
|
|
@ -662,7 +662,7 @@ _cpufreq_status_check_available(Status *e)
|
||||||
char buf[4096];
|
char buf[4096];
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
#ifdef __FreeBSD__
|
#ifdef __FreeBSD__
|
||||||
int freq, num, i;
|
int freq, i;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
char *freqs, *pos, *q;
|
char *freqs, *pos, *q;
|
||||||
|
|
||||||
|
@ -671,33 +671,26 @@ _cpufreq_status_check_available(Status *e)
|
||||||
if (sysctlbyname("dev.cpu.0.freq_levels", buf, &len, NULL, 0) == 0)
|
if (sysctlbyname("dev.cpu.0.freq_levels", buf, &len, NULL, 0) == 0)
|
||||||
{
|
{
|
||||||
/* sysctl returns 0 on success */
|
/* sysctl returns 0 on success */
|
||||||
|
|
||||||
if (e->frequencies)
|
if (e->frequencies)
|
||||||
{
|
{
|
||||||
evas_list_free(e->frequencies);
|
evas_list_free(e->frequencies);
|
||||||
e->frequencies = NULL;
|
e->frequencies = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* go through freqs and cound them */
|
|
||||||
num = 1;
|
|
||||||
for (pos = buf; *pos != 0; pos++)
|
|
||||||
{
|
|
||||||
if (*pos == ' ')
|
|
||||||
{
|
|
||||||
num++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* parse freqs and store the frequencies in e->frequencies */
|
/* parse freqs and store the frequencies in e->frequencies */
|
||||||
for (i = 0, pos=buf; i < num; i++)
|
pos = buf;
|
||||||
|
while (pos)
|
||||||
{
|
{
|
||||||
q = strchr(pos, ' ');
|
q = strchr(pos, '/');
|
||||||
if (q != NULL) *q = '\0';
|
if (!q) break;
|
||||||
|
|
||||||
sscanf(pos, "%d/%*d", &freq);
|
*q = '\0';
|
||||||
freq*=1000;
|
freq = atoi(pos);
|
||||||
|
freq *= 1000;
|
||||||
e->frequencies = evas_list_append(e->frequencies, (void *)freq);
|
e->frequencies = evas_list_append(e->frequencies, (void *)freq);
|
||||||
|
|
||||||
pos = q + 1;
|
pos = q + 1;
|
||||||
|
pos = strchr(pos, ' ');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue