From 6bd6302a3eeff00713e5e0f59427824f25788e15 Mon Sep 17 00:00:00 2001 From: barbieri Date: Wed, 17 Feb 2010 18:49:03 +0000 Subject: [PATCH] e_dbus/bluez: add support to method DefaultAdapter() By: Gustavo F. Padovan git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/e_dbus@46257 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/bin/e_dbus_bluez_test.c | 26 ++++++++++++++++++++++++++ src/lib/bluez/E_Bluez.h | 1 + src/lib/bluez/e_bluez_manager.c | 21 +++++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/src/bin/e_dbus_bluez_test.c b/src/bin/e_dbus_bluez_test.c index a526dcc..7efb68d 100644 --- a/src/bin/e_dbus_bluez_test.c +++ b/src/bin/e_dbus_bluez_test.c @@ -21,6 +21,24 @@ _method_success_check(void *data, DBusMessage *msg, DBusError *error) } static void +_default_adapter_callback(void *data, DBusMessage *msg, DBusError *err) +{ + E_Bluez_Element *element; + const char *path; + + if (dbus_message_get_args(msg, NULL, DBUS_TYPE_OBJECT_PATH, &path, + DBUS_TYPE_INVALID) == FALSE) + printf("FAILURE: failed to get default adapter\n"); + + printf("SUCCESS: default adapter: %s\n", path); + + element = e_bluez_element_get(path); + e_bluez_element_print(stdout, element); + return; + +} + +static void _elements_print(E_Bluez_Element **elements, unsigned int count) { unsigned int i; @@ -260,6 +278,13 @@ _on_cmd_manager_get(char *cmd, char *args) e_bluez_element_print(stderr, element); return 1; } + +static int +_on_cmd_manager_default_adapter(char *cmd, char *args) +{ + return e_bluez_manager_default_adapter(_default_adapter_callback); +} + /* Adapter Commands */ static int @@ -395,6 +420,7 @@ _on_input(void *data, Ecore_Fd_Handler *fd_handler) {"get_properties", _on_cmd_get_properties}, {"set_property", _on_cmd_property_set}, {"manager_get", _on_cmd_manager_get}, + {"manager_default_adapter", _on_cmd_manager_default_adapter}, {"adapter_register_agent", _on_cmd_adapter_register_agent}, {"adapter_unregister_agent", _on_cmd_adapter_unregister_agent}, {"adapter_get_address", _on_cmd_adapter_get_address}, diff --git a/src/lib/bluez/E_Bluez.h b/src/lib/bluez/E_Bluez.h index d444b39..f4a6cfb 100644 --- a/src/lib/bluez/E_Bluez.h +++ b/src/lib/bluez/E_Bluez.h @@ -70,6 +70,7 @@ extern "C" { /* Manager Methods */ EAPI E_Bluez_Element *e_bluez_manager_get(void) EINA_WARN_UNUSED_RESULT; + EAPI bool e_bluez_manager_default_adapter(E_DBus_Method_Return_Cb cb) EINA_WARN_UNUSED_RESULT; /* Adapter Methods */ EAPI bool e_bluez_adapter_agent_register(E_Bluez_Element *element, const char *object_path, const char *capability, E_DBus_Method_Return_Cb cb, const void *data) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT; diff --git a/src/lib/bluez/e_bluez_manager.c b/src/lib/bluez/e_bluez_manager.c index aaeead3..686255f 100644 --- a/src/lib/bluez/e_bluez_manager.c +++ b/src/lib/bluez/e_bluez_manager.c @@ -10,3 +10,24 @@ e_bluez_manager_get(void) { return e_bluez_element_get(manager_path); } + +/** + * + * Call method DefaultAdapter() on Manager. + * TODO: Soon this method will be replaced by ANY adapter inside BlueZ, so we + * won't need t to call it anymore. + * + * @param cb function to call when server replies or some error happens. + * + * @return 1 on success, 0 otherwise. + */ +bool +e_bluez_manager_default_adapter(E_DBus_Method_Return_Cb cb) +{ + E_Bluez_Element *element = e_bluez_element_get(manager_path); + const char name[] = "DefaultAdapter"; + + EINA_SAFETY_ON_NULL_RETURN_VAL(element, 0); + return e_bluez_element_call_full + (element, name, NULL, &element->_pending.properties_get, cb, NULL); +} -- 2.7.4