62e44e59b6bd959feb1c2bc2f0a8a6626f8143b9
[framework/uifw/e17.git] / src / modules / battery / e_mod_main.h
1 #ifndef E_MOD_MAIN_H
2 #define E_MOD_MAIN_H
3
4 #ifdef HAVE_EEZE
5 # include <Eeze.h>
6 #else
7 # include <E_Hal.h>
8 #endif
9
10 typedef struct _Config       Config;
11
12 #define CHECK_NONE      0
13 #define CHECK_ACPI      1
14 #define CHECK_APM       2
15 #define CHECK_PMU       3
16 #define CHECK_SYS_ACPI  4
17
18 #define UNKNOWN 0
19 #define NOSUBSYSTEM 1
20 #define SUBSYSTEM 2
21
22 #define POPUP_DEBOUNCE_CYCLES  2
23
24 struct _Config
25 {
26    /* saved * loaded config values */
27    int              poll_interval;
28    int              alert;      /* Alert on minutes remaining */
29    int              alert_p;    /* Alert on percentage remaining */
30    int              alert_timeout;  /* Popup dismissal timeout */
31    int              force_mode; /* force use of batget or hal */
32    /* just config state */
33    E_Module        *module;
34    E_Config_Dialog *config_dialog;
35    Eina_List       *instances;
36    E_Menu          *menu;
37    Ecore_Exe           *batget_exe;
38    Ecore_Event_Handler *batget_data_handler;
39    Ecore_Event_Handler *batget_del_handler;
40    Ecore_Timer         *alert_timer;
41    int                  full;
42    int                  time_left;
43    int                  time_full;
44    int                  have_battery;
45    int                  have_power;
46 #ifdef HAVE_EEZE
47    Eeze_Udev_Watch     *acwatch;
48    Eeze_Udev_Watch     *batwatch;
49    Eina_Bool            fuzzy;
50    int                  fuzzcount;
51 #else
52    struct {
53       // FIXME: on bat_conf del dbus_pending_call_cancel(dbus.have);
54       //        then set dbus.have to NULL
55       DBusPendingCall       *have;
56       // FIXME: on bat_conf del e_dbus_signal_handler_del() these
57       E_DBus_Signal_Handler *dev_add;
58       E_DBus_Signal_Handler *dev_del;
59    } dbus;
60 #endif
61 };
62
63 typedef struct _Battery Battery;
64 typedef struct _Ac_Adapter Ac_Adapter;
65
66 struct _Battery
67 {
68    const char *udi;
69 #ifdef HAVE_EEZE
70    Ecore_Poller *poll;
71 #else
72    E_DBus_Signal_Handler *prop_change;
73    Eina_Bool can_charge:1;
74 #endif
75    Eina_Bool present:1;
76    Eina_Bool charging:1;
77 #ifdef HAVE_EEZE
78    double last_update;
79    double percent;
80    double current_charge;
81    double design_charge;
82    double last_full_charge;
83    double charge_rate;
84    double time_full;
85    double time_left;
86 #else
87    int percent;
88    int current_charge;
89    int design_charge;
90    int last_full_charge;
91    int charge_rate;
92    int time_full;
93    int time_left;
94    const char *type;
95    const char *charge_units;
96 #endif
97    const char *technology;
98    const char *model;
99    const char *vendor;
100    Eina_Bool got_prop:1;
101 };
102
103 struct _Ac_Adapter
104 {
105    const char *udi;
106 #ifndef HAVE_EEZE
107    E_DBus_Signal_Handler *prop_change;
108 #endif
109    Eina_Bool present:1;
110    const char *product;
111 };
112
113 Battery *_battery_battery_find(const char *udi);
114 Ac_Adapter *_battery_ac_adapter_find(const char *udi);
115 void _battery_device_update(void);
116 #ifdef HAVE_EEZE
117 /* in e_mod_udev.c */
118 int  _battery_udev_start(void);
119 void _battery_udev_stop(void);
120 /* end e_mod_udev.c */
121 #else
122 /* in e_mod_dbus.c */
123 int  _battery_dbus_start(void);
124 void _battery_dbus_stop(void);
125 /* end e_mod_dbus.c */
126 #endif
127
128 EAPI extern E_Module_Api e_modapi;
129
130 EAPI void *e_modapi_init     (E_Module *m);
131 EAPI int   e_modapi_shutdown (E_Module *m);
132 EAPI int   e_modapi_save     (E_Module *m);
133
134 E_Config_Dialog *e_int_config_battery_module(E_Container *con, const char *params __UNUSED__);
135     
136 void _battery_config_updated(void);
137 extern Config *battery_config;
138
139 #endif