1 #include "sysinfo.h"
2
3 #define CONFIG_VERSION 2
4
5 static E_Config_DD *conf_edd = NULL;
6 static E_Config_DD *conf_item_edd = NULL;
7 Eina_List *sysinfo_instances = NULL;
8 Config *sysinfo_config = NULL;
9
10 EINTERN void
sysinfo_init(void)11 sysinfo_init(void)
12 {
13 Eina_List *l;
14 Config_Item *ci;
15
16 conf_item_edd = E_CONFIG_DD_NEW("Sysinfo_Config_Item", Config_Item);
17 #undef T
18 #undef D
19 #define T Config_Item
20 #define D conf_item_edd
21 E_CONFIG_VAL(D, T, id, INT);
22 E_CONFIG_VAL(D, T, version, INT);
23 E_CONFIG_VAL(D, T, esm, INT);
24 E_CONFIG_VAL(D, T, batman.poll_interval, INT);
25 E_CONFIG_VAL(D, T, batman.alert, INT);
26 E_CONFIG_VAL(D, T, batman.alert_p, INT);
27 E_CONFIG_VAL(D, T, batman.alert_timeout, INT);
28 E_CONFIG_VAL(D, T, batman.suspend_below, INT);
29 E_CONFIG_VAL(D, T, batman.suspend_method, INT);
30 E_CONFIG_VAL(D, T, batman.force_mode, INT);
31 #if defined(HAVE_EEZE) || defined(__OpenBSD__) || defined(__NetBSD__)
32 E_CONFIG_VAL(D, T, batman.fuzzy, INT);
33 #endif
34 E_CONFIG_VAL(D, T, batman.desktop_notifications, INT);
35 E_CONFIG_VAL(D, T, thermal.poll_interval, INT);
36 E_CONFIG_VAL(D, T, thermal.low, INT);
37 E_CONFIG_VAL(D, T, thermal.high, INT);
38 E_CONFIG_VAL(D, T, thermal.sensor_type, INT);
39 E_CONFIG_VAL(D, T, thermal.sensor_name, STR);
40 E_CONFIG_VAL(D, T, thermal.units, INT);
41 E_CONFIG_VAL(D, T, cpuclock.poll_interval, INT);
42 E_CONFIG_VAL(D, T, cpuclock.restore_governor, INT);
43 E_CONFIG_VAL(D, T, cpuclock.auto_powersave, INT);
44 E_CONFIG_VAL(D, T, cpuclock.powersave_governor, STR);
45 E_CONFIG_VAL(D, T, cpuclock.governor, STR);
46 E_CONFIG_VAL(D, T, cpuclock.pstate_min, INT);
47 E_CONFIG_VAL(D, T, cpuclock.pstate_max, INT);
48 E_CONFIG_VAL(D, T, cpumonitor.poll_interval, INT);
49 E_CONFIG_VAL(D, T, memusage.poll_interval, INT);
50 E_CONFIG_VAL(D, T, netstatus.poll_interval, INT);
51 E_CONFIG_VAL(D, T, netstatus.automax, INT);
52 E_CONFIG_VAL(D, T, netstatus.inmax, INT);
53 E_CONFIG_VAL(D, T, netstatus.outmax, INT);
54 E_CONFIG_VAL(D, T, netstatus.receive_units, INT);
55 E_CONFIG_VAL(D, T, netstatus.send_units, INT);
56
57 conf_edd = E_CONFIG_DD_NEW("Sysinfo_Config", Config);
58 #undef T
59 #undef D
60 #define T Config
61 #define D conf_edd
62 E_CONFIG_LIST(D, T, items, conf_item_edd);
63
64 sysinfo_config = e_config_domain_load("module.sysinfo", conf_edd);
65
66 if (!sysinfo_config)
67 {
68 sysinfo_config = E_NEW(Config, 1);
69 ci = E_NEW(Config_Item, 1);
70 ci->id = 0;
71 ci->version = CONFIG_VERSION;
72 ci->esm = E_SYSINFO_MODULE_NONE;
73
74 ci->batman.poll_interval = 512;
75 ci->batman.alert = 30;
76 ci->batman.alert_p = 10;
77 ci->batman.alert_timeout = 0;
78 ci->batman.suspend_below = 0;
79 ci->batman.suspend_method = 0;
80 ci->batman.force_mode = 0;
81 ci->batman.full = -2;
82 ci->batman.time_left = -2;
83 ci->batman.have_battery = -2;
84 ci->batman.have_power = -2;
85 #if defined(HAVE_EEZE) || defined(__OpenBSD__) || defined(__NetBSD__)
86 ci->batman.fuzzy = 0;
87 #endif
88 ci->batman.desktop_notifications = 0;
89 ci->batman.popup = NULL;
90 ci->batman.configure = NULL;
91 ci->batman.done = EINA_FALSE;
92 ci->thermal.poll_interval = 128;
93 ci->thermal.low = 30;
94 ci->thermal.high = 80;
95 ci->thermal.sensor_type = SENSOR_TYPE_NONE;
96 ci->thermal.sensor_name = NULL;
97 ci->thermal.temp = -900;
98 ci->thermal.units = CELSIUS;
99 ci->thermal.popup = NULL;
100 ci->thermal.configure = NULL;
101 ci->cpuclock.poll_interval = 32;
102 ci->cpuclock.restore_governor = 0;
103 ci->cpuclock.auto_powersave = 1;
104 ci->cpuclock.powersave_governor = NULL;
105 ci->cpuclock.governor = NULL;
106 ci->cpuclock.pstate_min = 1;
107 ci->cpuclock.pstate_max = 101;
108 ci->cpuclock.popup = NULL;
109 ci->cpuclock.configure = NULL;
110 ci->cpumonitor.poll_interval = 32;
111 ci->cpumonitor.percent = 0;
112 ci->cpumonitor.popup = NULL;
113 ci->cpumonitor.configure = NULL;
114 ci->memusage.poll_interval = 32;
115 ci->memusage.mem_percent = 0;
116 ci->memusage.swp_percent = 0;
117 ci->memusage.popup = NULL;
118 ci->memusage.configure = NULL;
119 ci->netstatus.poll_interval = 32;
120 ci->netstatus.automax = EINA_TRUE;
121 ci->netstatus.inmax = 0;
122 ci->netstatus.outmax = 0;
123 ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES;
124 ci->netstatus.send_units = NETSTATUS_UNIT_BYTES;
125 ci->netstatus.instring = NULL;
126 ci->netstatus.outstring = NULL;
127 ci->netstatus.popup = NULL;
128 ci->netstatus.configure = NULL;
129
130 E_CONFIG_LIMIT(ci->batman.poll_interval, 4, 4096);
131 E_CONFIG_LIMIT(ci->batman.alert, 0, 60);
132 E_CONFIG_LIMIT(ci->batman.alert_p, 0, 100);
133 E_CONFIG_LIMIT(ci->batman.alert_timeout, 0, 300);
134 E_CONFIG_LIMIT(ci->batman.suspend_below, 0, 50);
135 E_CONFIG_LIMIT(ci->batman.force_mode, 0, 2);
136 E_CONFIG_LIMIT(ci->batman.desktop_notifications, 0, 1);
137 E_CONFIG_LIMIT(ci->thermal.poll_interval, 1, 1024);
138 E_CONFIG_LIMIT(ci->thermal.low, 0, 100);
139 E_CONFIG_LIMIT(ci->thermal.high, 0, 220);
140 E_CONFIG_LIMIT(ci->thermal.units, CELSIUS, FAHRENHEIT);
141 E_CONFIG_LIMIT(ci->cpuclock.poll_interval, 1, 1024);
142 E_CONFIG_LIMIT(ci->cpumonitor.poll_interval, 1, 1024);
143 E_CONFIG_LIMIT(ci->memusage.poll_interval, 1, 1024);
144 E_CONFIG_LIMIT(ci->netstatus.poll_interval, 1, 1024);
145
146 sysinfo_config->items = eina_list_append(sysinfo_config->items, ci);
147 }
148 EINA_LIST_FOREACH(sysinfo_config->items, l, ci)
149 {
150 if (ci->esm == E_SYSINFO_MODULE_NETSTATUS || ci->esm == E_SYSINFO_MODULE_SYSINFO)
151 {
152 if (ci->version < CONFIG_VERSION)
153 {
154 ci->version = CONFIG_VERSION;
155 ci->netstatus.automax = EINA_TRUE;
156 ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES;
157 ci->netstatus.send_units = NETSTATUS_UNIT_BYTES;
158 }
159 }
160 }
161 e_gadget_type_add("Batman", batman_create, NULL);
162 e_gadget_type_add("Thermal", thermal_create, NULL);
163 e_gadget_type_add("CpuClock", cpuclock_create, NULL);
164 e_gadget_type_add("CpuMonitor", cpumonitor_create, NULL);
165 e_gadget_type_add("MemUsage", memusage_create, NULL);
166 e_gadget_type_add("NetStatus", netstatus_create, NULL);
167 e_gadget_type_add("SysInfo", sysinfo_create, NULL);
168 }
169
170 EINTERN void
sysinfo_shutdown(void)171 sysinfo_shutdown(void)
172 {
173 if (sysinfo_config)
174 {
175 Config_Item *ci;
176 EINA_LIST_FREE(sysinfo_config->items, ci)
177 {
178 E_FREE(ci);
179 }
180 E_FREE(sysinfo_config);
181 }
182 E_CONFIG_DD_FREE(conf_edd);
183 E_CONFIG_DD_FREE(conf_item_edd);
184
185 e_gadget_type_del("Batman");
186 e_gadget_type_del("Thermal");
187 e_gadget_type_del("CpuClock");
188 e_gadget_type_del("CpuMonitor");
189 e_gadget_type_del("MemUsage");
190 e_gadget_type_del("NetStatus");
191 e_gadget_type_del("SysInfo");
192 }
193
194 E_API E_Module_Api e_modapi =
195 {
196 E_MODULE_API_VERSION,
197 "Sysinfo"
198 };
199
200 E_API void *
e_modapi_init(E_Module * m)201 e_modapi_init(E_Module *m)
202 {
203 sysinfo_init();
204
205 sysinfo_config->module = m;
206 return m;
207 }
208
209 E_API int
e_modapi_shutdown(E_Module * m EINA_UNUSED)210 e_modapi_shutdown(E_Module *m EINA_UNUSED)
211 {
212 sysinfo_shutdown();
213 return 1;
214 }
215
216 E_API int
e_modapi_save(E_Module * m EINA_UNUSED)217 e_modapi_save(E_Module *m EINA_UNUSED)
218 {
219 e_config_domain_save("module.sysinfo", conf_edd, sysinfo_config);
220 return 1;
221 }
222
223