summaryrefslogtreecommitdiff
path: root/src/modules/battery/e_mod_main.h
blob: 0549b2f1a6b8c7062cacf9f5d9d3529fa19fe96f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#ifndef E_MOD_MAIN_H
#define E_MOD_MAIN_H

#ifdef HAVE_EEZE
# include <Eeze.h>
#else
# include <Eldbus.h>
#endif

#define CHECK_NONE      0
#define CHECK_ACPI      1
#define CHECK_APM       2
#define CHECK_PMU       3
#define CHECK_SYS_ACPI  4

#define UNKNOWN         0
#define NOSUBSYSTEM     1
#define SUBSYSTEM       2

#define SUSPEND         0
#define HIBERNATE       1
#define SHUTDOWN        2

#define POPUP_DEBOUNCE_CYCLES  2

typedef struct _Config Config;
struct _Config
{
   /* saved / loaded config values */
   int                  poll_interval;
   int                  alert;          /* Alert on minutes remaining */
   int                  alert_p;        /* Alert on percentage remaining */
   int                  alert_timeout;  /* Popup dismissal timeout */
   int                  suspend_below;  /* Suspend if battery drops below this level */
   int                  suspend_method; /* Method used to suspend the machine */
   int                  force_mode;     /* force use of batget or hal */
   /* just config state */
   E_Module            *module;
   E_Config_Dialog     *config_dialog;
   Eina_List           *instances;
   Ecore_Exe           *batget_exe;
   Ecore_Event_Handler *batget_data_handler;
   Ecore_Event_Handler *batget_del_handler;
   Ecore_Timer         *alert_timer;
   int                  full;
   int                  time_left;
   int                  time_full;
   int                  have_battery;
   int                  have_power;
   Eina_Bool            charging;
   int                  desktop_notifications;
#ifdef HAVE_EEZE
   Eeze_Udev_Watch     *acwatch;
   Eeze_Udev_Watch     *batwatch;
#endif
#if defined HAVE_EEZE || defined __OpenBSD__ || defined __NetBSD__
   Eina_Bool            fuzzy;
   int                  fuzzcount;
#endif
};

typedef struct _Battery Battery;
typedef struct _Ac_Adapter Ac_Adapter;

struct _Battery
{
   const char   *udi;
#if defined HAVE_EEZE || defined __OpenBSD__ || defined __DragonFly__ || defined __FreeBSD__ || defined __NetBSD__
   Ecore_Poller *poll;
   Eina_Bool     present E_BITFIELD;
   Eina_Bool     charging E_BITFIELD;
   double        last_update;
   double        percent;
   double        current_charge;
   double        design_charge;
   double        last_full_charge;
   double        charge_rate;
   double        time_full;
   double        time_left;
#else
   int           percent;
   int           current_charge;
   int           design_charge;
   int           last_full_charge;
   int           charge_rate;
   int           time_full;
   int           time_left;
   const char   *type;
   const char   *charge_units;
#endif
   const char   *technology;
   const char   *model;
   const char   *vendor;
   Eina_Bool     got_prop E_BITFIELD;
   Eldbus_Proxy *proxy;
#if defined __FreeBSD__ || defined __DragonFly__
   int           unit;
   int           batteries;
   int           time_min;
#endif
#if defined __OpenBSD__
   int          *mib;
#endif
};

struct _Ac_Adapter
{
   const char   *udi;
   Eina_Bool     present E_BITFIELD;
   const char   *product;
   Eldbus_Proxy *proxy;
#if defined __OpenBSD__
   int          *mib;
#endif
};

Battery    *_battery_battery_find(const char *udi);
Ac_Adapter *_battery_ac_adapter_find(const char *udi);
void        _battery_device_update(void);

#ifdef HAVE_EEZE
/* in e_mod_udev.c */
int         _battery_udev_start(void);
void        _battery_udev_stop(void);
/* end e_mod_udev.c */
#elif !defined __OpenBSD__ && !defined __DragonFly__ && !defined __FreeBSD__ && !defined __NetBSD__
/* in e_mod_dbus.c */
int         _battery_upower_start(void);
void        _battery_upower_stop(void);
/* end e_mod_dbus.c */
#else
/* in e_mod_sysctl.c */
int         _battery_sysctl_start(void);
void        _battery_sysctl_stop(void);
/* end e_mod_sysctl.c */
#endif

E_API extern E_Module_Api e_modapi;

E_API void *e_modapi_init     (E_Module *m);
E_API int   e_modapi_shutdown (E_Module *m);
E_API int   e_modapi_save     (E_Module *m);

E_Config_Dialog *e_int_config_battery_module(Evas_Object *parent, const char *params EINA_UNUSED);
extern Config   *battery_config;
void             _battery_config_updated(void);

#endif