#include "sysinfo.h" #define CONFIG_VERSION 1 static E_Config_DD *conf_edd = NULL; static E_Config_DD *conf_item_edd = NULL; Eina_List *sysinfo_instances = NULL; E_Module *module = NULL; Config *sysinfo_config = NULL; EINTERN void sysinfo_init(void) { Eina_List *l; Config_Item *ci; conf_item_edd = E_CONFIG_DD_NEW("Sysinfo_Config_Item", Config_Item); #undef T #undef D #define T Config_Item #define D conf_item_edd E_CONFIG_VAL(D, T, id, INT); E_CONFIG_VAL(D, T, version, INT); E_CONFIG_VAL(D, T, esm, INT); E_CONFIG_VAL(D, T, batman.poll_interval, INT); E_CONFIG_VAL(D, T, batman.alert, INT); E_CONFIG_VAL(D, T, batman.alert_p, INT); E_CONFIG_VAL(D, T, batman.alert_timeout, INT); E_CONFIG_VAL(D, T, batman.suspend_below, INT); E_CONFIG_VAL(D, T, batman.force_mode, INT); #if defined HAVE_EEZE || defined __OpenBSD__ || defined __NetBSD__ E_CONFIG_VAL(D, T, batman.fuzzy, INT); #endif E_CONFIG_VAL(D, T, batman.desktop_notifications, INT); E_CONFIG_VAL(D, T, thermal.poll_interval, INT); E_CONFIG_VAL(D, T, thermal.low, INT); E_CONFIG_VAL(D, T, thermal.high, INT); E_CONFIG_VAL(D, T, thermal.sensor_type, INT); E_CONFIG_VAL(D, T, thermal.sensor_name, STR); E_CONFIG_VAL(D, T, thermal.units, INT); E_CONFIG_VAL(D, T, cpuclock.poll_interval, INT); E_CONFIG_VAL(D, T, cpuclock.restore_governor, INT); E_CONFIG_VAL(D, T, cpuclock.auto_powersave, INT); E_CONFIG_VAL(D, T, cpuclock.powersave_governor, STR); E_CONFIG_VAL(D, T, cpuclock.governor, STR); E_CONFIG_VAL(D, T, cpuclock.pstate_min, INT); E_CONFIG_VAL(D, T, cpuclock.pstate_max, INT); E_CONFIG_VAL(D, T, cpumonitor.poll_interval, INT); E_CONFIG_VAL(D, T, memusage.poll_interval, INT); E_CONFIG_VAL(D, T, netstatus.poll_interval, INT); E_CONFIG_VAL(D, T, netstatus.automax, INT); E_CONFIG_VAL(D, T, netstatus.inmax, INT); E_CONFIG_VAL(D, T, netstatus.receive_units, INT); E_CONFIG_VAL(D, T, netstatus.outmax, INT); E_CONFIG_VAL(D, T, netstatus.send_units, INT); conf_edd = E_CONFIG_DD_NEW("Sysinfo_Config", Config); #undef T #undef D #define T Config #define D conf_edd E_CONFIG_LIST(D, T, items, conf_item_edd); sysinfo_config = e_config_domain_load("module.sysinfo", conf_edd); if (!sysinfo_config) { sysinfo_config = E_NEW(Config, 1); ci = E_NEW(Config_Item, 1); ci->id = 0; ci->version = CONFIG_VERSION; ci->esm = E_SYSINFO_MODULE_NONE; ci->batman.poll_interval = 512; ci->batman.alert = 30; ci->batman.alert_p = 10; ci->batman.alert_timeout = 0; ci->batman.suspend_below = 0; ci->batman.force_mode = 0; ci->batman.full = -2; ci->batman.time_left = -2; ci->batman.have_battery = -2; ci->batman.have_power = -2; #if defined HAVE_EEZE || defined __OpenBSD__ || defined __NetBSD__ ci->batman.fuzzy = 0; #endif ci->batman.desktop_notifications = 0; ci->thermal.poll_interval = 128; ci->thermal.low = 30; ci->thermal.high = 80; ci->thermal.sensor_type = SENSOR_TYPE_NONE; ci->thermal.sensor_name = NULL; ci->thermal.temp = -900; ci->thermal.units = CELSIUS; ci->cpuclock.poll_interval = 32; ci->cpuclock.restore_governor = 0; ci->cpuclock.auto_powersave = 1; ci->cpuclock.powersave_governor = NULL; ci->cpuclock.governor = NULL; ci->cpuclock.pstate_min = 1; ci->cpuclock.pstate_max = 101; ci->cpumonitor.poll_interval = 32; ci->cpumonitor.total = 0; ci->cpumonitor.idle = 0; ci->cpumonitor.percent = 0; ci->cpumonitor.popup = NULL; ci->cpumonitor.configure = NULL; ci->memusage.poll_interval = 32; ci->memusage.mem_percent = 0; ci->memusage.swp_percent = 0; ci->memusage.popup = NULL; ci->memusage.configure = NULL; ci->netstatus.poll_interval = 32; ci->netstatus.automax = EINA_TRUE; ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES; ci->netstatus.send_units = NETSTATUS_UNIT_BYTES; ci->netstatus.in = 0; ci->netstatus.out = 0; ci->netstatus.inmax = 0; ci->netstatus.outmax = 0; ci->netstatus.incurrent = 0; ci->netstatus.outcurrent = 0; ci->netstatus.inpercent = 0; ci->netstatus.outpercent = 0; ci->netstatus.instring = NULL; ci->netstatus.outstring = NULL; ci->netstatus.popup = NULL; ci->netstatus.configure = NULL; E_CONFIG_LIMIT(ci->batman.poll_interval, 4, 4096); E_CONFIG_LIMIT(ci->batman.alert, 0, 60); E_CONFIG_LIMIT(ci->batman.alert_p, 0, 100); E_CONFIG_LIMIT(ci->batman.alert_timeout, 0, 300); E_CONFIG_LIMIT(ci->batman.suspend_below, 0, 50); E_CONFIG_LIMIT(ci->batman.force_mode, 0, 2); E_CONFIG_LIMIT(ci->batman.desktop_notifications, 0, 1); E_CONFIG_LIMIT(ci->thermal.poll_interval, 1, 1024); E_CONFIG_LIMIT(ci->thermal.low, 0, 100); E_CONFIG_LIMIT(ci->thermal.high, 0, 220); E_CONFIG_LIMIT(ci->thermal.units, CELSIUS, FAHRENHEIT); E_CONFIG_LIMIT(ci->cpuclock.poll_interval, 1, 1024); E_CONFIG_LIMIT(ci->cpumonitor.poll_interval, 1, 1024); E_CONFIG_LIMIT(ci->memusage.poll_interval, 1, 1024); E_CONFIG_LIMIT(ci->netstatus.poll_interval, 1, 1024); sysinfo_config->items = eina_list_append(sysinfo_config->items, ci); } EINA_LIST_FOREACH(sysinfo_config->items, l, ci) { if (ci->esm == E_SYSINFO_MODULE_NETSTATUS || ci->esm == E_SYSINFO_MODULE_SYSINFO) { if (ci->version < CONFIG_VERSION) { ci->version = CONFIG_VERSION; ci->netstatus.automax = EINA_TRUE; ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES; ci->netstatus.send_units = NETSTATUS_UNIT_BYTES; } } } e_gadget_type_add("Batman", batman_create, NULL); e_gadget_type_add("Thermal", thermal_create, NULL); e_gadget_type_add("CpuClock", cpuclock_create, NULL); e_gadget_type_add("CpuMonitor", cpumonitor_create, NULL); e_gadget_type_add("MemUsage", memusage_create, NULL); e_gadget_type_add("NetStatus", netstatus_create, NULL); e_gadget_type_add("SysInfo", sysinfo_create, NULL); } EINTERN void sysinfo_shutdown(void) { if (sysinfo_config) { Config_Item *ci; EINA_LIST_FREE(sysinfo_config->items, ci) { free(ci); } E_FREE(sysinfo_config); } E_CONFIG_DD_FREE(conf_edd); E_CONFIG_DD_FREE(conf_item_edd); e_gadget_type_del("Batman"); e_gadget_type_del("Thermal"); e_gadget_type_del("CpuClock"); e_gadget_type_del("CpuMonitor"); e_gadget_type_del("MemUsage"); e_gadget_type_del("NetStatus"); e_gadget_type_del("SysInfo"); } E_API E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Sysinfo" }; E_API void * e_modapi_init(E_Module *m) { sysinfo_init(); module = m; sysinfo_config->module = m; return m; } E_API int e_modapi_shutdown(E_Module *m EINA_UNUSED) { sysinfo_shutdown(); return 1; } E_API int e_modapi_save(E_Module *m EINA_UNUSED) { e_config_domain_save("module.sysinfo", conf_edd, sysinfo_config); return 1; }