e_dbus/bluez: add support to method DefaultAdapter()
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 17 Feb 2010 18:49:03 +0000 (18:49 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 17 Feb 2010 18:49:03 +0000 (18:49 +0000)
By: Gustavo F. Padovan <padovan@profusion.mobi>

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
src/lib/bluez/E_Bluez.h
src/lib/bluez/e_bluez_manager.c

index a526dcc..7efb68d 100644 (file)
@@ -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},
index d444b39..f4a6cfb 100644 (file)
@@ -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;
index aaeead3..686255f 100644 (file)
@@ -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);
+}