Batteries: Add multiple suppor
This commit is contained in:
parent
4792cd07e4
commit
6ba6c25135
30
src/system.c
30
src/system.c
|
@ -814,6 +814,13 @@ _power_battery_count_get(power_t *power)
|
||||||
|
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
power->batteries = malloc(power->battery_count * sizeof(bat_t **));
|
||||||
|
for (int i = 0; i < power->battery_count; i++)
|
||||||
|
{
|
||||||
|
power->batteries[i] = calloc(1, sizeof(bat_t));
|
||||||
|
}
|
||||||
|
|
||||||
return power->battery_count;
|
return power->battery_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -821,6 +828,7 @@ static void
|
||||||
_battery_state_get(power_t *power, int *mib)
|
_battery_state_get(power_t *power, int *mib)
|
||||||
{
|
{
|
||||||
#if defined(__OpenBSD__) || defined(__NetBSD__)
|
#if defined(__OpenBSD__) || defined(__NetBSD__)
|
||||||
|
static int index = 0;
|
||||||
double charge_full = 0;
|
double charge_full = 0;
|
||||||
double charge_current = 0;
|
double charge_current = 0;
|
||||||
size_t slen = sizeof(struct sensor);
|
size_t slen = sizeof(struct sensor);
|
||||||
|
@ -854,13 +862,14 @@ _battery_state_get(power_t *power, int *mib)
|
||||||
charge_current = (double)snsr.value;
|
charge_current = (double)snsr.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
power->charge_full += charge_full;
|
power->batteries[index]->charge_full = charge_full;
|
||||||
power->charge_current += charge_current;
|
power->batteries[index]->charge_current = charge_current;
|
||||||
|
++index;
|
||||||
#elif defined(__FreeBSD__) || defined(__DragonFly__)
|
#elif defined(__FreeBSD__) || defined(__DragonFly__)
|
||||||
unsigned int value;
|
unsigned int value;
|
||||||
size_t len = sizeof(value);
|
size_t len = sizeof(value);
|
||||||
if ((sysctl(mib, 4, &value, &len, NULL, 0)) != -1)
|
if ((sysctl(mib, 4, &value, &len, NULL, 0)) != -1)
|
||||||
power->percent = value;
|
power->batteries[0]->percent = value;
|
||||||
#elif defined(__linux__)
|
#elif defined(__linux__)
|
||||||
char path[PATH_MAX];
|
char path[PATH_MAX];
|
||||||
struct dirent *dh;
|
struct dirent *dh;
|
||||||
|
@ -915,8 +924,8 @@ _battery_state_get(power_t *power, int *mib)
|
||||||
free(buf);
|
free(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
power->charge_full += charge_full;
|
power->batteries[i]->charge_full = charge_full;
|
||||||
power->charge_current += charge_current;
|
power->batteries[i]->charge_current = charge_current;
|
||||||
|
|
||||||
free(naming);
|
free(naming);
|
||||||
|
|
||||||
|
@ -971,10 +980,13 @@ _power_state_get(power_t *power)
|
||||||
_battery_state_get(power, power->bat_mibs[i]);
|
_battery_state_get(power, power->bat_mibs[i]);
|
||||||
|
|
||||||
#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__linux__)
|
#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__linux__)
|
||||||
double percent =
|
for (i = 0; i < power->battery_count; i++)
|
||||||
100 * (power->charge_current / power->charge_full);
|
{
|
||||||
|
double percent =
|
||||||
|
100 * (power->batteries[i]->charge_current / power->batteries[i]->charge_full);
|
||||||
|
power->batteries[i]->percent = percent;
|
||||||
|
}
|
||||||
|
|
||||||
power->percent = percent;
|
|
||||||
power->have_ac = have_ac;
|
power->have_ac = have_ac;
|
||||||
#elif defined(__FreeBSD__) || defined(__DragonFly__)
|
#elif defined(__FreeBSD__) || defined(__DragonFly__)
|
||||||
len = sizeof(value);
|
len = sizeof(value);
|
||||||
|
@ -983,7 +995,7 @@ _power_state_get(power_t *power)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
power->percent = value;
|
power->batteries[0]->percent = value;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
14
src/system.h
14
src/system.h
|
@ -22,15 +22,21 @@ typedef struct
|
||||||
unsigned long swap_used;
|
unsigned long swap_used;
|
||||||
} meminfo_t;
|
} meminfo_t;
|
||||||
|
|
||||||
|
#define MAX_BATTERIES 10
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
double charge_full;
|
||||||
|
double charge_current;
|
||||||
|
uint8_t percent;
|
||||||
|
} bat_t;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
bool have_ac;
|
bool have_ac;
|
||||||
int battery_count;
|
int battery_count;
|
||||||
|
|
||||||
double charge_full;
|
bat_t **batteries;
|
||||||
double charge_current;
|
|
||||||
uint8_t percent;
|
|
||||||
#define MAX_BATTERIES 10
|
|
||||||
char *battery_names[MAX_BATTERIES];
|
char *battery_names[MAX_BATTERIES];
|
||||||
int *bat_mibs[MAX_BATTERIES];
|
int *bat_mibs[MAX_BATTERIES];
|
||||||
int ac_mibs[5];
|
int ac_mibs[5];
|
||||||
|
|
4
src/ui.c
4
src/ui.c
|
@ -132,7 +132,7 @@ _misc_view_update(Ui *ui, results_t *results)
|
||||||
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
evas_object_show(box);
|
evas_object_show(box);
|
||||||
|
|
||||||
if (results->power.battery_count)
|
for (int i = 0; i < results->power.battery_count; i++)
|
||||||
{
|
{
|
||||||
frame = elm_frame_add(box);
|
frame = elm_frame_add(box);
|
||||||
evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, 0);
|
evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, 0);
|
||||||
|
@ -149,7 +149,7 @@ _misc_view_update(Ui *ui, results_t *results)
|
||||||
evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
elm_progressbar_span_size_set(progress, 1.0);
|
elm_progressbar_span_size_set(progress, 1.0);
|
||||||
elm_progressbar_unit_format_set(progress, "%1.2f%%");
|
elm_progressbar_unit_format_set(progress, "%1.2f%%");
|
||||||
_progressbar_value_force_set(progress, (double)results->power.percent / 100);
|
_progressbar_value_force_set(progress, (double)results->power.batteries[i]->percent / 100);
|
||||||
evas_object_show(progress);
|
evas_object_show(progress);
|
||||||
elm_object_content_set(frame, progress);
|
elm_object_content_set(frame, progress);
|
||||||
elm_box_pack_end(box, frame);
|
elm_box_pack_end(box, frame);
|
||||||
|
|
Loading…
Reference in New Issue