Battery: refactoring
This commit is contained in:
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
PangoFontDescription *bat1_font_desc;
|
PangoFontDescription *bat1_font_desc;
|
||||||
PangoFontDescription *bat2_font_desc;
|
PangoFontDescription *bat2_font_desc;
|
||||||
struct batstate battery_state;
|
struct BatteryState battery_state;
|
||||||
gboolean battery_enabled;
|
gboolean battery_enabled;
|
||||||
gboolean battery_tooltip_enabled;
|
gboolean battery_tooltip_enabled;
|
||||||
int percentage_hide;
|
int percentage_hide;
|
||||||
@@ -43,7 +43,7 @@ static char buf_bat_percentage[10];
|
|||||||
static char buf_bat_time[20];
|
static char buf_bat_time[20];
|
||||||
|
|
||||||
int8_t battery_low_status;
|
int8_t battery_low_status;
|
||||||
unsigned char battery_low_cmd_sent;
|
gboolean battery_low_cmd_sent;
|
||||||
char *ac_connected_cmd;
|
char *ac_connected_cmd;
|
||||||
char *ac_disconnected_cmd;
|
char *ac_disconnected_cmd;
|
||||||
char *battery_low_cmd;
|
char *battery_low_cmd;
|
||||||
@@ -52,14 +52,14 @@ char *battery_mclick_command;
|
|||||||
char *battery_rclick_command;
|
char *battery_rclick_command;
|
||||||
char *battery_uwheel_command;
|
char *battery_uwheel_command;
|
||||||
char *battery_dwheel_command;
|
char *battery_dwheel_command;
|
||||||
int battery_found;
|
gboolean battery_found;
|
||||||
|
|
||||||
void update_battery_tick(void *arg)
|
void update_battery_tick(void *arg)
|
||||||
{
|
{
|
||||||
if (!battery_enabled)
|
if (!battery_enabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int old_found = battery_found;
|
gboolean old_found = battery_found;
|
||||||
int old_percentage = battery_state.percentage;
|
int old_percentage = battery_state.percentage;
|
||||||
gboolean old_ac_connected = battery_state.ac_connected;
|
gboolean old_ac_connected = battery_state.ac_connected;
|
||||||
int16_t old_hours = battery_state.time.hours;
|
int16_t old_hours = battery_state.time.hours;
|
||||||
@@ -106,7 +106,7 @@ void update_battery_tick(void *arg)
|
|||||||
panel_refresh = TRUE;
|
panel_refresh = TRUE;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (panels[i].battery.area.on_screen == 0) {
|
if (!panels[i].battery.area.on_screen) {
|
||||||
show(&panels[i].battery.area);
|
show(&panels[i].battery.area);
|
||||||
panel_refresh = TRUE;
|
panel_refresh = TRUE;
|
||||||
}
|
}
|
||||||
@@ -125,11 +125,11 @@ void update_battery_tick(void *arg)
|
|||||||
|
|
||||||
void default_battery()
|
void default_battery()
|
||||||
{
|
{
|
||||||
battery_enabled = 0;
|
battery_enabled = FALSE;
|
||||||
battery_tooltip_enabled = 1;
|
battery_tooltip_enabled = TRUE;
|
||||||
battery_found = 0;
|
battery_found = FALSE;
|
||||||
percentage_hide = 101;
|
percentage_hide = 101;
|
||||||
battery_low_cmd_sent = 0;
|
battery_low_cmd_sent = FALSE;
|
||||||
battery_timeout = NULL;
|
battery_timeout = NULL;
|
||||||
bat1_font_desc = NULL;
|
bat1_font_desc = NULL;
|
||||||
bat2_font_desc = NULL;
|
bat2_font_desc = NULL;
|
||||||
@@ -172,7 +172,7 @@ void cleanup_battery()
|
|||||||
ac_disconnected_cmd = NULL;
|
ac_disconnected_cmd = NULL;
|
||||||
stop_timeout(battery_timeout);
|
stop_timeout(battery_timeout);
|
||||||
battery_timeout = NULL;
|
battery_timeout = NULL;
|
||||||
battery_found = 0;
|
battery_found = FALSE;
|
||||||
|
|
||||||
battery_os_free();
|
battery_os_free();
|
||||||
}
|
}
|
||||||
@@ -239,7 +239,7 @@ int update_battery()
|
|||||||
battery_state.state = BATTERY_UNKNOWN;
|
battery_state.state = BATTERY_UNKNOWN;
|
||||||
battery_state.percentage = 0;
|
battery_state.percentage = 0;
|
||||||
battery_state.ac_connected = FALSE;
|
battery_state.ac_connected = FALSE;
|
||||||
batstate_set_time(&battery_state, 0);
|
battery_state_set_time(&battery_state, 0);
|
||||||
|
|
||||||
err = battery_os_update(&battery_state);
|
err = battery_os_update(&battery_state);
|
||||||
|
|
||||||
|
|||||||
@@ -26,22 +26,27 @@ typedef struct Battery {
|
|||||||
int bat2_posy;
|
int bat2_posy;
|
||||||
} Battery;
|
} Battery;
|
||||||
|
|
||||||
enum chargestate { BATTERY_UNKNOWN, BATTERY_CHARGING, BATTERY_DISCHARGING, BATTERY_FULL };
|
typedef enum ChargeState {
|
||||||
|
BATTERY_UNKNOWN = 0,
|
||||||
|
BATTERY_CHARGING,
|
||||||
|
BATTERY_DISCHARGING,
|
||||||
|
BATTERY_FULL,
|
||||||
|
} ChargeState;
|
||||||
|
|
||||||
typedef struct battime {
|
typedef struct BatteryTime {
|
||||||
int16_t hours;
|
int16_t hours;
|
||||||
int8_t minutes;
|
int8_t minutes;
|
||||||
int8_t seconds;
|
int8_t seconds;
|
||||||
} battime;
|
} BatteryTime;
|
||||||
|
|
||||||
typedef struct batstate {
|
typedef struct BatteryState {
|
||||||
int percentage;
|
int percentage;
|
||||||
struct battime time;
|
BatteryTime time;
|
||||||
enum chargestate state;
|
ChargeState state;
|
||||||
gboolean ac_connected;
|
gboolean ac_connected;
|
||||||
} batstate;
|
} BatteryState;
|
||||||
|
|
||||||
extern struct batstate battery_state;
|
extern struct BatteryState battery_state;
|
||||||
extern PangoFontDescription *bat1_font_desc;
|
extern PangoFontDescription *bat1_font_desc;
|
||||||
extern PangoFontDescription *bat2_font_desc;
|
extern PangoFontDescription *bat2_font_desc;
|
||||||
extern gboolean battery_enabled;
|
extern gboolean battery_enabled;
|
||||||
@@ -60,7 +65,7 @@ extern char *battery_rclick_command;
|
|||||||
extern char *battery_uwheel_command;
|
extern char *battery_uwheel_command;
|
||||||
extern char *battery_dwheel_command;
|
extern char *battery_dwheel_command;
|
||||||
|
|
||||||
static inline gchar *chargestate2str(enum chargestate state)
|
static inline gchar *chargestate2str(ChargeState state)
|
||||||
{
|
{
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case BATTERY_CHARGING:
|
case BATTERY_CHARGING:
|
||||||
@@ -75,7 +80,7 @@ static inline gchar *chargestate2str(enum chargestate state)
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void batstate_set_time(struct batstate *state, int seconds)
|
static inline void battery_state_set_time(BatteryState *state, int seconds)
|
||||||
{
|
{
|
||||||
state->time.hours = seconds / 3600;
|
state->time.hours = seconds / 3600;
|
||||||
seconds -= 3600 * state->time.hours;
|
seconds -= 3600 * state->time.hours;
|
||||||
@@ -106,7 +111,7 @@ void battery_action(int button);
|
|||||||
/* operating system specific functions */
|
/* operating system specific functions */
|
||||||
gboolean battery_os_init();
|
gboolean battery_os_init();
|
||||||
void battery_os_free();
|
void battery_os_free();
|
||||||
int battery_os_update(struct batstate *state);
|
int battery_os_update(BatteryState *state);
|
||||||
char *battery_os_tooltip();
|
char *battery_os_tooltip();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ void battery_os_free()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int battery_os_update(struct batstate *state)
|
int battery_os_update(BatteryState *state)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ void battery_os_free()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int battery_os_update(struct batstate *state)
|
int battery_os_update(BatteryState *state)
|
||||||
{
|
{
|
||||||
int sysctl_out = 0;
|
int sysctl_out = 0;
|
||||||
size_t len = sizeof(sysctl_out);
|
size_t len = sizeof(sysctl_out);
|
||||||
@@ -63,7 +63,7 @@ int battery_os_update(struct batstate *state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sysctlbyname("hw.acpi.battery.time", &sysctl_out, &len, NULL, 0) == 0)
|
if (sysctlbyname("hw.acpi.battery.time", &sysctl_out, &len, NULL, 0) == 0)
|
||||||
batstate_set_time(state, sysctl_out * 60);
|
battery_state_set_time(state, sysctl_out * 60);
|
||||||
else
|
else
|
||||||
err = -1;
|
err = -1;
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ enum psy_type {
|
|||||||
struct psy_battery {
|
struct psy_battery {
|
||||||
/* generic properties */
|
/* generic properties */
|
||||||
gchar *name;
|
gchar *name;
|
||||||
|
/* monotonic time, in microseconds */
|
||||||
gint64 timestamp;
|
gint64 timestamp;
|
||||||
/* sysfs files */
|
/* sysfs files */
|
||||||
gchar *path_present;
|
gchar *path_present;
|
||||||
@@ -49,7 +50,7 @@ struct psy_battery {
|
|||||||
gint energy_now;
|
gint energy_now;
|
||||||
gint energy_full;
|
gint energy_full;
|
||||||
gint power_now;
|
gint power_now;
|
||||||
enum chargestate status;
|
ChargeState status;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct psy_mains {
|
struct psy_mains {
|
||||||
@@ -382,7 +383,7 @@ static gboolean update_linux_mains(struct psy_mains *ac)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int battery_os_update(struct batstate *state)
|
int battery_os_update(BatteryState *state)
|
||||||
{
|
{
|
||||||
GList *l;
|
GList *l;
|
||||||
|
|
||||||
@@ -430,7 +431,7 @@ int battery_os_update(struct batstate *state)
|
|||||||
else if (state->state == BATTERY_DISCHARGING)
|
else if (state->state == BATTERY_DISCHARGING)
|
||||||
seconds = 3600 * total_energy_now / total_power_now;
|
seconds = 3600 * total_energy_now / total_power_now;
|
||||||
}
|
}
|
||||||
batstate_set_time(state, seconds);
|
battery_state_set_time(state, seconds);
|
||||||
|
|
||||||
/* calculate percentage */
|
/* calculate percentage */
|
||||||
state->percentage = energy_to_percent(total_energy_now, total_energy_full);
|
state->percentage = energy_to_percent(total_energy_now, total_energy_full);
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ void battery_os_free()
|
|||||||
apm_fd = -1;
|
apm_fd = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int battery_os_update(struct batstate *state)
|
int battery_os_update(BatteryState *state)
|
||||||
{
|
{
|
||||||
struct apm_power_info info;
|
struct apm_power_info info;
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ int battery_os_update(struct batstate *state)
|
|||||||
|
|
||||||
state->percentage = info.battery_life;
|
state->percentage = info.battery_life;
|
||||||
if (info.minutes_left != -1)
|
if (info.minutes_left != -1)
|
||||||
batstate_set_time(state, info.minutes_left * 60);
|
battery_state_set_time(state, info.minutes_left * 60);
|
||||||
|
|
||||||
state->ac_connected = info.ac_state == APM_AC_ON;
|
state->ac_connected = info.ac_state == APM_AC_ON;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user