forked from enlightenment/enlightenment
bluez5 - move from enlightenment_sys to e_system for l2ping and rfkill
This commit is contained in:
parent
be8792a2ee
commit
689dfde91b
|
@ -21,9 +21,8 @@ struct _Obj {
|
|||
Eina_Bool in_table : 1;
|
||||
Eina_Bool add_called : 1;
|
||||
Eina_Bool ping_ok : 1;
|
||||
Eina_Bool ping_busy : 1;
|
||||
Ecore_Timer *ping_timer;
|
||||
Ecore_Exe *ping_exe;
|
||||
Ecore_Event_Handler *ping_exe_handler;
|
||||
//// public data to read
|
||||
const char *path;
|
||||
Obj_Type type;
|
||||
|
|
|
@ -537,35 +537,42 @@ bz_obj_disconnect(Obj *o)
|
|||
(o->proxy, "Disconnect", cb_disconnect, o, -1, "");
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
cb_ping_exit(void *data, int type EINA_UNUSED, void *event)
|
||||
static void
|
||||
_cb_l2ping(void *data, const char *params)
|
||||
{
|
||||
Obj *o = data;
|
||||
Ecore_Exe_Event_Del *ev = event;
|
||||
char addr[256];
|
||||
int timeout = 0;
|
||||
|
||||
printf("@@@EXE EXIT.. %p == %p\n", ev->exe, o->ping_exe);
|
||||
if (ev->exe != o->ping_exe) return ECORE_CALLBACK_PASS_ON;
|
||||
printf("@@@PING RESULT... %i\n", ev->exit_code);
|
||||
o->ping_exe = NULL;
|
||||
if (ev->exit_code == 0)
|
||||
if (sscanf(params, "%255s %i", addr, &timeout) == 2)
|
||||
{
|
||||
if (!o->ping_ok)
|
||||
if (!strcmp(o->address, addr))
|
||||
{
|
||||
printf("@@@PING SUCCEED\n");
|
||||
o->ping_ok = EINA_TRUE;
|
||||
if (o->fn_change) o->fn_change(o);
|
||||
if (o->ping_busy)
|
||||
{
|
||||
e_system_handler_del("l2ping-ping", _cb_l2ping, o);
|
||||
o->ping_busy = EINA_FALSE;
|
||||
}
|
||||
if (timeout >= 0)
|
||||
{
|
||||
if (!o->ping_ok)
|
||||
{
|
||||
printf("@@@PING SUCCEED\n");
|
||||
o->ping_ok = EINA_TRUE;
|
||||
if (o->fn_change) o->fn_change(o);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (o->ping_ok)
|
||||
{
|
||||
printf("@@@PING FAIL\n");
|
||||
o->ping_ok = EINA_FALSE;
|
||||
if (o->fn_change) o->fn_change(o);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (o->ping_ok)
|
||||
{
|
||||
printf("@@@PING FAIL\n");
|
||||
o->ping_ok = EINA_FALSE;
|
||||
if (o->fn_change) o->fn_change(o);
|
||||
}
|
||||
}
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -584,24 +591,13 @@ ping_powersave_timeout_get(void)
|
|||
static void
|
||||
ping_do(Obj *o)
|
||||
{
|
||||
Eina_Strbuf *buf;
|
||||
|
||||
if (!o->ping_exe_handler)
|
||||
o->ping_exe_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
|
||||
cb_ping_exit, o);
|
||||
buf = eina_strbuf_new();
|
||||
if (buf)
|
||||
{
|
||||
int timeout = ping_powersave_timeout_get();
|
||||
|
||||
timeout *= 1000;
|
||||
eina_strbuf_append_printf
|
||||
(buf, "%s/enlightenment/utils/enlightenment_sys l2ping %s %i",
|
||||
e_prefix_lib_get(), o->address, timeout);
|
||||
o->ping_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
|
||||
eina_strbuf_free(buf);
|
||||
printf("@@@ run new ping %s %i = %p\n", o->address, timeout, o->ping_exe);
|
||||
}
|
||||
int timeout = 1000 * ping_powersave_timeout_get();
|
||||
if (o->ping_busy)
|
||||
e_system_handler_del("l2ping-ping", _cb_l2ping, o);
|
||||
o->ping_busy = EINA_TRUE;
|
||||
e_system_handler_add("l2ping-ping", _cb_l2ping, o);
|
||||
e_system_send("l2ping-ping", "%s %i", o->address, timeout);
|
||||
printf("@@@ run new ping %s %i\n", o->address, timeout);
|
||||
}
|
||||
|
||||
static Eina_Bool cb_ping_timer(void *data);
|
||||
|
@ -621,11 +617,10 @@ cb_ping_timer(void *data)
|
|||
Obj *o = data;
|
||||
|
||||
printf("@@@ ping timer %s\n", o->address);
|
||||
if (o->ping_exe)
|
||||
if (o->ping_busy)
|
||||
{
|
||||
printf("@@@PING TIMEOUT\n");
|
||||
ecore_exe_free(o->ping_exe);
|
||||
o->ping_exe = NULL;
|
||||
o->ping_busy = EINA_FALSE;
|
||||
e_system_handler_del("l2ping-ping", _cb_l2ping, o);
|
||||
if (o->ping_ok)
|
||||
{
|
||||
o->ping_ok = EINA_FALSE;
|
||||
|
@ -641,15 +636,10 @@ void
|
|||
bz_obj_ping_begin(Obj *o)
|
||||
{
|
||||
if (o->ping_timer) return;
|
||||
if (o->ping_exe_handler)
|
||||
if (o->ping_busy)
|
||||
{
|
||||
ecore_event_handler_del(o->ping_exe_handler);
|
||||
o->ping_exe_handler = NULL;
|
||||
}
|
||||
if (o->ping_exe)
|
||||
{
|
||||
ecore_exe_free(o->ping_exe);
|
||||
o->ping_exe = NULL;
|
||||
o->ping_busy = EINA_FALSE;
|
||||
e_system_handler_del("l2ping-ping", _cb_l2ping, o);
|
||||
}
|
||||
ping_do(o);
|
||||
ping_schedule(o);
|
||||
|
@ -658,20 +648,15 @@ bz_obj_ping_begin(Obj *o)
|
|||
void
|
||||
bz_obj_ping_end(Obj *o)
|
||||
{
|
||||
if (o->ping_exe_handler)
|
||||
{
|
||||
ecore_event_handler_del(o->ping_exe_handler);
|
||||
o->ping_exe_handler = NULL;
|
||||
}
|
||||
if (o->ping_timer)
|
||||
{
|
||||
ecore_timer_del(o->ping_timer);
|
||||
o->ping_timer = NULL;
|
||||
}
|
||||
if (o->ping_exe)
|
||||
if (o->ping_busy)
|
||||
{
|
||||
ecore_exe_free(o->ping_exe);
|
||||
o->ping_exe = NULL;
|
||||
o->ping_busy = EINA_FALSE;
|
||||
e_system_handler_del("l2ping-ping", _cb_l2ping, o);
|
||||
}
|
||||
if (o->ping_ok)
|
||||
{
|
||||
|
@ -735,6 +720,11 @@ bz_obj_unref(Obj *o)
|
|||
o->in_table = EINA_FALSE;
|
||||
eina_hash_del(obj_table, o->path, o);
|
||||
}
|
||||
if (o->ping_busy)
|
||||
{
|
||||
o->ping_busy = EINA_FALSE;
|
||||
e_system_handler_del("l2ping-ping", _cb_l2ping, o);
|
||||
}
|
||||
_obj_clear(o);
|
||||
if (o->prop_sig)
|
||||
{
|
||||
|
@ -761,21 +751,11 @@ bz_obj_unref(Obj *o)
|
|||
bz_agent_msg_drop(o->agent_msg_ok);
|
||||
o->agent_msg_ok = NULL;
|
||||
}
|
||||
if (o->ping_exe_handler)
|
||||
{
|
||||
ecore_event_handler_del(o->ping_exe_handler);
|
||||
o->ping_exe_handler = NULL;
|
||||
}
|
||||
if (o->ping_timer)
|
||||
{
|
||||
ecore_timer_del(o->ping_timer);
|
||||
o->ping_timer = NULL;
|
||||
}
|
||||
if (o->ping_exe)
|
||||
{
|
||||
ecore_exe_free(o->ping_exe);
|
||||
o->ping_exe = NULL;
|
||||
}
|
||||
if (o->proxy)
|
||||
{
|
||||
eldbus_proxy_unref(o->proxy);
|
||||
|
|
|
@ -9,9 +9,6 @@ static E_Config_DD *conf_device_edd = NULL;
|
|||
static E_Config_DD *conf_edd = NULL;
|
||||
Config *ebluez5_config = NULL;
|
||||
|
||||
static Ecore_Event_Handler *_exe_exit_handler = NULL;
|
||||
static Ecore_Exe *_rfkill_exe = NULL;
|
||||
|
||||
E_API E_Module_Api e_modapi = {E_MODULE_API_VERSION, "Bluez5"};
|
||||
|
||||
static void
|
||||
|
@ -288,44 +285,27 @@ ebluez5_popups_show(void)
|
|||
}
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_exe_cb_exit(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
||||
static void
|
||||
_cb_rfkill_unblock(void *datam EINA_UNUSED, const char *params)
|
||||
{
|
||||
Ecore_Exe_Event_Del *ev = event;
|
||||
int ret_code = 0;
|
||||
|
||||
if (!ev->exe) return ECORE_CALLBACK_PASS_ON;
|
||||
if (ev->exe == _rfkill_exe)
|
||||
{
|
||||
if ((ev->exited) && (ev->exit_code != EXIT_SUCCESS))
|
||||
{
|
||||
e_util_dialog_show
|
||||
(_("Bluetooth rfkill run Error"),
|
||||
_("Trying to rfkill unblock the bluetooth adapter failed.<br>"
|
||||
"Do you have rfkill installed? Check sysactions.conf<br>"
|
||||
"to ensure the command is right and your user is<br>"
|
||||
"permitted to use the rfkill unblock action. Check the<br>"
|
||||
"users and groups there to be sure."));
|
||||
}
|
||||
_rfkill_exe = NULL;
|
||||
}
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
sscanf(params, "%i %*s", &ret_code);
|
||||
if (ret_code == 0) return;
|
||||
|
||||
e_util_dialog_show
|
||||
(_("Bluetooth rfkill run Error"),
|
||||
_("Trying to rfkill unblock the bluetooth adapter failed.<br>"
|
||||
"Do you have rfkill installed? Check sysactions.conf<br>"
|
||||
"to ensure the command is right and your user is<br>"
|
||||
"permitted to use the rfkill unblock action. Check the<br>"
|
||||
"users and groups there to be sure."));
|
||||
}
|
||||
|
||||
void
|
||||
ebluez5_rfkill_unblock(const char *name)
|
||||
{
|
||||
Eina_Strbuf *buf;
|
||||
|
||||
// XXX: need config tp enable or disable this behavior
|
||||
buf = eina_strbuf_new();
|
||||
if (buf)
|
||||
{
|
||||
eina_strbuf_append_printf
|
||||
(buf, "%s/enlightenment/utils/enlightenment_sys rfkill-unblock %s",
|
||||
e_prefix_lib_get(), name);
|
||||
_rfkill_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
|
||||
eina_strbuf_free(buf);
|
||||
}
|
||||
e_system_send("rfkill-unblock", "%s", name);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -475,8 +455,7 @@ e_modapi_init(E_Module *m)
|
|||
E_CONFIG_LIST(D, T, adapters, conf_adapter_edd);
|
||||
E_CONFIG_LIST(D, T, devices, conf_device_edd);
|
||||
|
||||
_exe_exit_handler =
|
||||
ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _exe_cb_exit, NULL);
|
||||
e_system_handler_add("rfkill-unblock", _cb_rfkill_unblock, NULL);
|
||||
|
||||
ebluez5_config = e_config_domain_load("module.ebluez5", conf_edd);
|
||||
if (!ebluez5_config) ebluez5_config = E_NEW(Config, 1);
|
||||
|
@ -496,6 +475,7 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
|
|||
Config_Adapter *ad;
|
||||
Config_Device *dev;
|
||||
|
||||
e_system_handler_del("rfkill-unblock", _cb_rfkill_unblock, NULL);
|
||||
EINA_LIST_FREE(ebluez5_config->adapters, ad)
|
||||
{
|
||||
eina_stringshare_del(ad->addr);
|
||||
|
@ -515,11 +495,6 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
|
|||
e_gadget_type_del("Bluetooth");
|
||||
e_gadcon_provider_unregister(&_gc_class);
|
||||
|
||||
if (_exe_exit_handler)
|
||||
{
|
||||
ecore_event_handler_del(_exe_exit_handler);
|
||||
_exe_exit_handler = NULL;
|
||||
}
|
||||
E_CONFIG_DD_FREE(conf_edd);
|
||||
E_CONFIG_DD_FREE(conf_adapter_edd);
|
||||
return 1;
|
||||
|
|
Loading…
Reference in New Issue