obd source support bluetooth devices 55/1855/1
authorKevron Rees <kevron_m_rees@linux.intel.com>
Tue, 25 Sep 2012 22:17:55 +0000 (15:17 -0700)
committerKevron Rees <kevron_m_rees@linux.intel.com>
Tue, 25 Sep 2012 22:17:55 +0000 (15:17 -0700)
13 files changed:
automotive-message-broker.odp
examples/democonfig
examples/obdsourceconfig [moved from examples/configobdsource with 83% similarity]
lib/listplusplus.h
plugins/obd2plugin/CMakeLists.txt
plugins/obd2plugin/bluetooth.hpp [new file with mode: 0644]
plugins/obd2plugin/bluetoothadapterproxy.c [new file with mode: 0644]
plugins/obd2plugin/bluetoothadapterproxy.h [new file with mode: 0644]
plugins/obd2plugin/bluetoothmanagerproxy.c [new file with mode: 0644]
plugins/obd2plugin/bluetoothmanagerproxy.h [new file with mode: 0644]
plugins/obd2plugin/bluetoothserialproxy.c [new file with mode: 0644]
plugins/obd2plugin/bluetoothserialproxy.h [new file with mode: 0644]
plugins/obd2plugin/obd2source.cpp

index fc680e2..2e42e9b 100644 (file)
Binary files a/automotive-message-broker.odp and b/automotive-message-broker.odp differ
index f86dd71..11fc7a5 100644 (file)
@@ -3,7 +3,7 @@
                {
                        "name" : "WheelSource",
                        "path" : "/usr/lib/automotive-message-broker/wheelsourceplugin.so",
-                       "device" : "/dev/input/js1"
+                       "device" : "/dev/input/js0"
                }
        ],
        "sinks": [
@@ -13,6 +13,9 @@
                        "interface" : "lo"
                } ,
                {
+                        "path" : "/usr/lib/automotive-message-broker/dbussinkplugin.so"
+                },
+               {
                        "path" : "/usr/lib/automotive-message-broker/demosinkplugin.so",
                        "script" : "./rundemo %1"
                }
similarity index 83%
rename from examples/configobdsource
rename to examples/obdsourceconfig
index e17ac89..d8b685e 100644 (file)
@@ -3,8 +3,8 @@
                {
                        "name" : "OBD2Source",
                        "path" : "/usr/lib/automotive-message-broker/obd2sourceplugin.so",
-                       "port" : "/dev/ttyUSB0",
-                       "ip" : "115200"
+                       "device" : "/dev/ttyUSB0",
+                       "baud" : "115200"
                }
        ],
        "sinks": [
index df815f3..d71272a 100644 (file)
@@ -54,4 +54,10 @@ private:
        std::list<T> *mList;
 };
 
+template <class T, class V>
+bool contains(T iteratable, V value)
+{
+       return (std::find(iteratable.begin(), iteratable.end(), value) != iteratable.end());
+}
+
 #endif // LISTPLUSPLUS_H
index 26bbd39..d902421 100644 (file)
@@ -1,10 +1,15 @@
 include(CheckIncludeFiles)
-include_directories(${CMAKE_SOURCE_DIR}/lib ${include_dirs})
 
-set(obd2sourceplugin_headers obd2source.h obdlib.h)
-set(obd2sourceplugin_sources obd2source.cpp obdlib.cpp)
+
+pkg_check_modules(gio REQUIRED gio-2.0)
+pkg_check_modules(gio-unix REQUIRED gio-unix-2.0)
+
+include_directories(${CMAKE_SOURCE_DIR}/lib ${include_dirs} ${gio_INCLUDE_DIRS} ${gio-unix_INCLUDE_DIRS})
+
+set(obd2sourceplugin_headers obd2source.h obdlib.h bluetoothmanagerproxy.h  bluetoothadapterproxy.h bluetoothserialproxy.h)
+set(obd2sourceplugin_sources obd2source.cpp obdlib.cpp bluetooth.hpp bluetoothmanagerproxy.c bluetoothadapterproxy.c bluetoothserialproxy.c)
 add_library(obd2sourceplugin MODULE ${obd2sourceplugin_sources})
 set_target_properties(obd2sourceplugin PROPERTIES PREFIX "")
-target_link_libraries(obd2sourceplugin amb -L${CMAKE_CURRENT_BINARY_DIR}/lib ${link_libraries})
+target_link_libraries(obd2sourceplugin amb -L${CMAKE_CURRENT_BINARY_DIR}/lib ${link_libraries} ${gio_LIBRARIES} ${gio-unix_LIBRARIES})
 
 install(TARGETS obd2sourceplugin LIBRARY DESTINATION lib/automotive-message-broker)
diff --git a/plugins/obd2plugin/bluetooth.hpp b/plugins/obd2plugin/bluetooth.hpp
new file mode 100644 (file)
index 0000000..f88491a
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef OBDBLUETOOTH
+#define OBDBLUETOOTH
+
+#include <string>
+#include "bluetoothmanagerproxy.h"
+#include "bluetoothadapterproxy.h"
+#include "bluetoothserialproxy.h"
+
+
+class ObdBluetoothDevice
+{
+public:
+       std::string getDeviceForAddress(std::string address)
+       {
+
+               GError* error = NULL;
+               OrgBluezManager* manager = org_bluez_manager_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM,
+                                                                                                                                                                G_DBUS_PROXY_FLAGS_NONE,
+                                                                                                                                                                "org.bluez","/",NULL, &error);
+
+               if(!manager)
+               {
+                       DebugOut(0)<<"Error getting bluetooth manager proxy: "<<error->message<<endl;
+                       g_error_free(error);
+                       return "";
+               }
+
+               error = NULL;
+
+               gchar* adapterPath;
+               if(!org_bluez_manager_call_default_adapter_sync(manager,&adapterPath,NULL,&error))
+               {
+                       DebugOut(0)<<"Error getting bluetooth default adapter: "<<error->message<<endl;
+                       g_error_free(error);
+                       return "";
+               }
+
+               error = NULL;
+
+               OrgBluezAdapter* adapter = org_bluez_adapter_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM,
+                                                                                                                                                                G_DBUS_PROXY_FLAGS_NONE,
+                                                                                                                                                                "org.bluez",adapterPath,NULL,&error);
+               if(!adapter)
+               {
+                       DebugOut(0)<<"Error getting bluetooth adapter proxy: "<<error->message<<endl;
+                       g_error_free(error);
+                       return "";
+               }
+
+               error = NULL;
+
+               gchar* devicePath;
+               if(!org_bluez_adapter_call_find_device_sync(adapter,address.c_str(),&devicePath,NULL,&error) ||
+                               std::string(devicePath) == "")
+               {
+                       DebugOut(0)<<"Error finding bluetooth device: "<<address<<error->message<<endl;
+                       g_error_free(error);
+                       return "";
+               }
+
+               error = NULL;
+
+               OrgBluezSerial* serialDevice = org_bluez_serial_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM,
+                                                                                                                                                                       G_DBUS_PROXY_FLAGS_NONE,
+                                                                                                                                                                       "org.bluez",devicePath,NULL,&error);
+
+               if(!serialDevice)
+               {
+                       DebugOut(0)<<"Error getting bluetooth serial device proxy: "<<error->message<<endl;
+                       g_error_free(error);
+                       return "";
+               }
+
+               gchar* serialDeviceName;
+               if(!org_bluez_serial_call_connect_sync(serialDevice,"spp",&serialDeviceName,NULL,&error))
+               {
+                       DebugOut(0)<<"Error connecting bluetooth serial device: "<<address<<" - "<<error->message<<endl;
+                       g_error_free(error);
+                       return "";
+               }
+
+               return serialDeviceName;
+       }
+};
+
+
+#endif
diff --git a/plugins/obd2plugin/bluetoothadapterproxy.c b/plugins/obd2plugin/bluetoothadapterproxy.c
new file mode 100644 (file)
index 0000000..a4725c7
--- /dev/null
@@ -0,0 +1,3801 @@
+/*
+ * Generated by gdbus-codegen 2.32.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include "bluetoothadapterproxy.h"
+
+#ifdef G_OS_UNIX
+#  include <gio/gunixfdlist.h>
+#endif
+
+typedef struct
+{
+  GDBusArgInfo parent_struct;
+  gboolean use_gvariant;
+} _ExtendedGDBusArgInfo;
+
+typedef struct
+{
+  GDBusMethodInfo parent_struct;
+  const gchar *signal_name;
+  gboolean pass_fdlist;
+} _ExtendedGDBusMethodInfo;
+
+typedef struct
+{
+  GDBusSignalInfo parent_struct;
+  const gchar *signal_name;
+} _ExtendedGDBusSignalInfo;
+
+typedef struct
+{
+  GDBusPropertyInfo parent_struct;
+  const gchar *hyphen_name;
+  gboolean use_gvariant;
+} _ExtendedGDBusPropertyInfo;
+
+typedef struct
+{
+  GDBusInterfaceInfo parent_struct;
+  const gchar *hyphen_name;
+} _ExtendedGDBusInterfaceInfo;
+
+typedef struct
+{
+  const _ExtendedGDBusPropertyInfo *info;
+  guint prop_id;
+  GValue orig_value; /* the value before the change */
+} ChangedProperty;
+
+static void
+_changed_property_free (ChangedProperty *data)
+{
+  g_value_unset (&data->orig_value);
+  g_free (data);
+}
+
+static gboolean
+_g_strv_equal0 (gchar **a, gchar **b)
+{
+  gboolean ret = FALSE;
+  guint n;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  if (g_strv_length (a) != g_strv_length (b))
+    goto out;
+  for (n = 0; a[n] != NULL; n++)
+    if (g_strcmp0 (a[n], b[n]) != 0)
+      goto out;
+  ret = TRUE;
+out:
+  return ret;
+}
+
+static gboolean
+_g_variant_equal0 (GVariant *a, GVariant *b)
+{
+  gboolean ret = FALSE;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  ret = g_variant_equal (a, b);
+out:
+  return ret;
+}
+
+G_GNUC_UNUSED static gboolean
+_g_value_equal (const GValue *a, const GValue *b)
+{
+  gboolean ret = FALSE;
+  g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
+  switch (G_VALUE_TYPE (a))
+    {
+      case G_TYPE_BOOLEAN:
+        ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
+        break;
+      case G_TYPE_UCHAR:
+        ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
+        break;
+      case G_TYPE_INT:
+        ret = (g_value_get_int (a) == g_value_get_int (b));
+        break;
+      case G_TYPE_UINT:
+        ret = (g_value_get_uint (a) == g_value_get_uint (b));
+        break;
+      case G_TYPE_INT64:
+        ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
+        break;
+      case G_TYPE_UINT64:
+        ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
+        break;
+      case G_TYPE_DOUBLE:
+        ret = (g_value_get_double (a) == g_value_get_double (b));
+        break;
+      case G_TYPE_STRING:
+        ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
+        break;
+      case G_TYPE_VARIANT:
+        ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
+        break;
+      default:
+        if (G_VALUE_TYPE (a) == G_TYPE_STRV)
+          ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
+        else
+          g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
+        break;
+    }
+  return ret;
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.bluez.Adapter
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OrgBluezAdapter
+ * @title: OrgBluezAdapter
+ * @short_description: Generated C code for the org.bluez.Adapter D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-bluez-Adapter.top_of_page">org.bluez.Adapter</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.bluez.Adapter ---- */
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_get_properties_OUT_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_method_info_get_properties_OUT_ARG_pointers[] =
+{
+  &_org_bluez_adapter_method_info_get_properties_OUT_ARG_unnamed_arg0,
+  NULL
+};
+
+static const GDBusAnnotationInfo _org_bluez_adapter_method_get_properties_annotation_info_0 =
+{
+  -1,
+  "com.trolltech.QtDBus.QtTypeName.Out0",
+  "QVariantMap",
+  NULL
+};
+
+static const GDBusAnnotationInfo * const _org_bluez_adapter_method_get_properties_annotation_info_pointers[] =
+{
+  &_org_bluez_adapter_method_get_properties_annotation_info_0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_get_properties =
+{
+  {
+    -1,
+    "GetProperties",
+    NULL,
+    (GDBusArgInfo **) &_org_bluez_adapter_method_info_get_properties_OUT_ARG_pointers,
+    (GDBusAnnotationInfo **) &_org_bluez_adapter_method_get_properties_annotation_info_pointers
+  },
+  "handle-get-properties",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_set_property_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_set_property_IN_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_method_info_set_property_IN_ARG_pointers[] =
+{
+  &_org_bluez_adapter_method_info_set_property_IN_ARG_unnamed_arg0,
+  &_org_bluez_adapter_method_info_set_property_IN_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_set_property =
+{
+  {
+    -1,
+    "SetProperty",
+    (GDBusArgInfo **) &_org_bluez_adapter_method_info_set_property_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-set-property",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_request_session =
+{
+  {
+    -1,
+    "RequestSession",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-request-session",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_release_session =
+{
+  {
+    -1,
+    "ReleaseSession",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-release-session",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_start_discovery =
+{
+  {
+    -1,
+    "StartDiscovery",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-start-discovery",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_stop_discovery =
+{
+  {
+    -1,
+    "StopDiscovery",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-stop-discovery",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_list_devices_OUT_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "ao",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_method_info_list_devices_OUT_ARG_pointers[] =
+{
+  &_org_bluez_adapter_method_info_list_devices_OUT_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_list_devices =
+{
+  {
+    -1,
+    "ListDevices",
+    NULL,
+    (GDBusArgInfo **) &_org_bluez_adapter_method_info_list_devices_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-list-devices",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_create_device_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_method_info_create_device_IN_ARG_pointers[] =
+{
+  &_org_bluez_adapter_method_info_create_device_IN_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_create_device_OUT_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_method_info_create_device_OUT_ARG_pointers[] =
+{
+  &_org_bluez_adapter_method_info_create_device_OUT_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_create_device =
+{
+  {
+    -1,
+    "CreateDevice",
+    (GDBusArgInfo **) &_org_bluez_adapter_method_info_create_device_IN_ARG_pointers,
+    (GDBusArgInfo **) &_org_bluez_adapter_method_info_create_device_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-create-device",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_create_paired_device_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_create_paired_device_IN_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_create_paired_device_IN_ARG_unnamed_arg2 =
+{
+  {
+    -1,
+    "unnamed_arg2",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_method_info_create_paired_device_IN_ARG_pointers[] =
+{
+  &_org_bluez_adapter_method_info_create_paired_device_IN_ARG_unnamed_arg0,
+  &_org_bluez_adapter_method_info_create_paired_device_IN_ARG_unnamed_arg1,
+  &_org_bluez_adapter_method_info_create_paired_device_IN_ARG_unnamed_arg2,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_create_paired_device_OUT_ARG_unnamed_arg3 =
+{
+  {
+    -1,
+    "unnamed_arg3",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_method_info_create_paired_device_OUT_ARG_pointers[] =
+{
+  &_org_bluez_adapter_method_info_create_paired_device_OUT_ARG_unnamed_arg3,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_create_paired_device =
+{
+  {
+    -1,
+    "CreatePairedDevice",
+    (GDBusArgInfo **) &_org_bluez_adapter_method_info_create_paired_device_IN_ARG_pointers,
+    (GDBusArgInfo **) &_org_bluez_adapter_method_info_create_paired_device_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-create-paired-device",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_cancel_device_creation_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_method_info_cancel_device_creation_IN_ARG_pointers[] =
+{
+  &_org_bluez_adapter_method_info_cancel_device_creation_IN_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_cancel_device_creation =
+{
+  {
+    -1,
+    "CancelDeviceCreation",
+    (GDBusArgInfo **) &_org_bluez_adapter_method_info_cancel_device_creation_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-cancel-device-creation",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_remove_device_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_method_info_remove_device_IN_ARG_pointers[] =
+{
+  &_org_bluez_adapter_method_info_remove_device_IN_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_remove_device =
+{
+  {
+    -1,
+    "RemoveDevice",
+    (GDBusArgInfo **) &_org_bluez_adapter_method_info_remove_device_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-remove-device",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_find_device_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_method_info_find_device_IN_ARG_pointers[] =
+{
+  &_org_bluez_adapter_method_info_find_device_IN_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_find_device_OUT_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_method_info_find_device_OUT_ARG_pointers[] =
+{
+  &_org_bluez_adapter_method_info_find_device_OUT_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_find_device =
+{
+  {
+    -1,
+    "FindDevice",
+    (GDBusArgInfo **) &_org_bluez_adapter_method_info_find_device_IN_ARG_pointers,
+    (GDBusArgInfo **) &_org_bluez_adapter_method_info_find_device_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-find-device",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_register_agent_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_register_agent_IN_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_method_info_register_agent_IN_ARG_pointers[] =
+{
+  &_org_bluez_adapter_method_info_register_agent_IN_ARG_unnamed_arg0,
+  &_org_bluez_adapter_method_info_register_agent_IN_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_register_agent =
+{
+  {
+    -1,
+    "RegisterAgent",
+    (GDBusArgInfo **) &_org_bluez_adapter_method_info_register_agent_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-register-agent",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_method_info_unregister_agent_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_method_info_unregister_agent_IN_ARG_pointers[] =
+{
+  &_org_bluez_adapter_method_info_unregister_agent_IN_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_adapter_method_info_unregister_agent =
+{
+  {
+    -1,
+    "UnregisterAgent",
+    (GDBusArgInfo **) &_org_bluez_adapter_method_info_unregister_agent_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-unregister-agent",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _org_bluez_adapter_method_info_pointers[] =
+{
+  &_org_bluez_adapter_method_info_get_properties,
+  &_org_bluez_adapter_method_info_set_property,
+  &_org_bluez_adapter_method_info_request_session,
+  &_org_bluez_adapter_method_info_release_session,
+  &_org_bluez_adapter_method_info_start_discovery,
+  &_org_bluez_adapter_method_info_stop_discovery,
+  &_org_bluez_adapter_method_info_list_devices,
+  &_org_bluez_adapter_method_info_create_device,
+  &_org_bluez_adapter_method_info_create_paired_device,
+  &_org_bluez_adapter_method_info_cancel_device_creation,
+  &_org_bluez_adapter_method_info_remove_device,
+  &_org_bluez_adapter_method_info_find_device,
+  &_org_bluez_adapter_method_info_register_agent,
+  &_org_bluez_adapter_method_info_unregister_agent,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_signal_info_property_changed_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_signal_info_property_changed_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_signal_info_property_changed_ARG_pointers[] =
+{
+  &_org_bluez_adapter_signal_info_property_changed_ARG_unnamed_arg0,
+  &_org_bluez_adapter_signal_info_property_changed_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_bluez_adapter_signal_info_property_changed =
+{
+  {
+    -1,
+    "PropertyChanged",
+    (GDBusArgInfo **) &_org_bluez_adapter_signal_info_property_changed_ARG_pointers,
+    NULL
+  },
+  "property-changed"
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_signal_info_device_created_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_signal_info_device_created_ARG_pointers[] =
+{
+  &_org_bluez_adapter_signal_info_device_created_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_bluez_adapter_signal_info_device_created =
+{
+  {
+    -1,
+    "DeviceCreated",
+    (GDBusArgInfo **) &_org_bluez_adapter_signal_info_device_created_ARG_pointers,
+    NULL
+  },
+  "device-created"
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_signal_info_device_removed_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_signal_info_device_removed_ARG_pointers[] =
+{
+  &_org_bluez_adapter_signal_info_device_removed_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_bluez_adapter_signal_info_device_removed =
+{
+  {
+    -1,
+    "DeviceRemoved",
+    (GDBusArgInfo **) &_org_bluez_adapter_signal_info_device_removed_ARG_pointers,
+    NULL
+  },
+  "device-removed"
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_signal_info_device_found_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_signal_info_device_found_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_signal_info_device_found_ARG_pointers[] =
+{
+  &_org_bluez_adapter_signal_info_device_found_ARG_unnamed_arg0,
+  &_org_bluez_adapter_signal_info_device_found_ARG_unnamed_arg1,
+  NULL
+};
+
+static const GDBusAnnotationInfo _org_bluez_adapter_signal_device_found_annotation_info_0 =
+{
+  -1,
+  "com.trolltech.QtDBus.QtTypeName.In1",
+  "QVariantMap",
+  NULL
+};
+
+static const GDBusAnnotationInfo * const _org_bluez_adapter_signal_device_found_annotation_info_pointers[] =
+{
+  &_org_bluez_adapter_signal_device_found_annotation_info_0,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_bluez_adapter_signal_info_device_found =
+{
+  {
+    -1,
+    "DeviceFound",
+    (GDBusArgInfo **) &_org_bluez_adapter_signal_info_device_found_ARG_pointers,
+    (GDBusAnnotationInfo **) &_org_bluez_adapter_signal_device_found_annotation_info_pointers
+  },
+  "device-found"
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_adapter_signal_info_device_disappeared_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_adapter_signal_info_device_disappeared_ARG_pointers[] =
+{
+  &_org_bluez_adapter_signal_info_device_disappeared_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_bluez_adapter_signal_info_device_disappeared =
+{
+  {
+    -1,
+    "DeviceDisappeared",
+    (GDBusArgInfo **) &_org_bluez_adapter_signal_info_device_disappeared_ARG_pointers,
+    NULL
+  },
+  "device-disappeared"
+};
+
+static const _ExtendedGDBusSignalInfo * const _org_bluez_adapter_signal_info_pointers[] =
+{
+  &_org_bluez_adapter_signal_info_property_changed,
+  &_org_bluez_adapter_signal_info_device_created,
+  &_org_bluez_adapter_signal_info_device_removed,
+  &_org_bluez_adapter_signal_info_device_found,
+  &_org_bluez_adapter_signal_info_device_disappeared,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _org_bluez_adapter_interface_info =
+{
+  {
+    -1,
+    "org.bluez.Adapter",
+    (GDBusMethodInfo **) &_org_bluez_adapter_method_info_pointers,
+    (GDBusSignalInfo **) &_org_bluez_adapter_signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "org-bluez-adapter",
+};
+
+
+/**
+ * org_bluez_adapter_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-bluez-Adapter.top_of_page">org.bluez.Adapter</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+org_bluez_adapter_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_org_bluez_adapter_interface_info;
+}
+
+/**
+ * org_bluez_adapter_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OrgBluezAdapter interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+org_bluez_adapter_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OrgBluezAdapter:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Adapter.top_of_page">org.bluez.Adapter</link>.
+ */
+
+/**
+ * OrgBluezAdapterIface:
+ * @parent_iface: The parent interface.
+ * @handle_cancel_device_creation: Handler for the #OrgBluezAdapter::handle-cancel-device-creation signal.
+ * @handle_create_device: Handler for the #OrgBluezAdapter::handle-create-device signal.
+ * @handle_create_paired_device: Handler for the #OrgBluezAdapter::handle-create-paired-device signal.
+ * @handle_find_device: Handler for the #OrgBluezAdapter::handle-find-device signal.
+ * @handle_get_properties: Handler for the #OrgBluezAdapter::handle-get-properties signal.
+ * @handle_list_devices: Handler for the #OrgBluezAdapter::handle-list-devices signal.
+ * @handle_register_agent: Handler for the #OrgBluezAdapter::handle-register-agent signal.
+ * @handle_release_session: Handler for the #OrgBluezAdapter::handle-release-session signal.
+ * @handle_remove_device: Handler for the #OrgBluezAdapter::handle-remove-device signal.
+ * @handle_request_session: Handler for the #OrgBluezAdapter::handle-request-session signal.
+ * @handle_set_property: Handler for the #OrgBluezAdapter::handle-set-property signal.
+ * @handle_start_discovery: Handler for the #OrgBluezAdapter::handle-start-discovery signal.
+ * @handle_stop_discovery: Handler for the #OrgBluezAdapter::handle-stop-discovery signal.
+ * @handle_unregister_agent: Handler for the #OrgBluezAdapter::handle-unregister-agent signal.
+ * @device_created: Handler for the #OrgBluezAdapter::device-created signal.
+ * @device_disappeared: Handler for the #OrgBluezAdapter::device-disappeared signal.
+ * @device_found: Handler for the #OrgBluezAdapter::device-found signal.
+ * @device_removed: Handler for the #OrgBluezAdapter::device-removed signal.
+ * @property_changed: Handler for the #OrgBluezAdapter::property-changed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Adapter.top_of_page">org.bluez.Adapter</link>.
+ */
+
+static void
+org_bluez_adapter_default_init (OrgBluezAdapterIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OrgBluezAdapter::handle-get-properties:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.GetProperties">GetProperties()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_get_properties() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-get-properties",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_get_properties),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OrgBluezAdapter::handle-set-property:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_unnamed_arg0: Argument passed by remote caller.
+   * @arg_unnamed_arg1: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.SetProperty">SetProperty()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_set_property() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-set-property",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_set_property),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    3,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_VARIANT);
+
+  /**
+   * OrgBluezAdapter::handle-request-session:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.RequestSession">RequestSession()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_request_session() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-request-session",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_request_session),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OrgBluezAdapter::handle-release-session:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.ReleaseSession">ReleaseSession()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_release_session() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-release-session",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_release_session),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OrgBluezAdapter::handle-start-discovery:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.StartDiscovery">StartDiscovery()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_start_discovery() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-start-discovery",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_start_discovery),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OrgBluezAdapter::handle-stop-discovery:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.StopDiscovery">StopDiscovery()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_stop_discovery() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-stop-discovery",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_stop_discovery),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OrgBluezAdapter::handle-list-devices:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.ListDevices">ListDevices()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_list_devices() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-list-devices",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_list_devices),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OrgBluezAdapter::handle-create-device:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_unnamed_arg0: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.CreateDevice">CreateDevice()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_create_device() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-create-device",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_create_device),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /**
+   * OrgBluezAdapter::handle-create-paired-device:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_unnamed_arg0: Argument passed by remote caller.
+   * @arg_unnamed_arg1: Argument passed by remote caller.
+   * @arg_unnamed_arg2: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.CreatePairedDevice">CreatePairedDevice()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_create_paired_device() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-create-paired-device",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_create_paired_device),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    4,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
+
+  /**
+   * OrgBluezAdapter::handle-cancel-device-creation:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_unnamed_arg0: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.CancelDeviceCreation">CancelDeviceCreation()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_cancel_device_creation() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-cancel-device-creation",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_cancel_device_creation),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /**
+   * OrgBluezAdapter::handle-remove-device:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_unnamed_arg0: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.RemoveDevice">RemoveDevice()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_remove_device() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-remove-device",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_remove_device),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /**
+   * OrgBluezAdapter::handle-find-device:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_unnamed_arg0: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.FindDevice">FindDevice()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_find_device() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-find-device",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_find_device),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /**
+   * OrgBluezAdapter::handle-register-agent:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_unnamed_arg0: Argument passed by remote caller.
+   * @arg_unnamed_arg1: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.RegisterAgent">RegisterAgent()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_register_agent() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-register-agent",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_register_agent),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    3,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING);
+
+  /**
+   * OrgBluezAdapter::handle-unregister-agent:
+   * @object: A #OrgBluezAdapter.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_unnamed_arg0: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Adapter.UnregisterAgent">UnregisterAgent()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_adapter_complete_unregister_agent() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-unregister-agent",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, handle_unregister_agent),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * OrgBluezAdapter::property-changed:
+   * @object: A #OrgBluezAdapter.
+   * @arg_unnamed_arg0: Argument.
+   * @arg_unnamed_arg1: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-bluez-Adapter.PropertyChanged">"PropertyChanged"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("property-changed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, property_changed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+  /**
+   * OrgBluezAdapter::device-created:
+   * @object: A #OrgBluezAdapter.
+   * @arg_unnamed_arg0: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-bluez-Adapter.DeviceCreated">"DeviceCreated"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("device-created",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, device_created),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+  /**
+   * OrgBluezAdapter::device-removed:
+   * @object: A #OrgBluezAdapter.
+   * @arg_unnamed_arg0: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-bluez-Adapter.DeviceRemoved">"DeviceRemoved"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("device-removed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, device_removed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+  /**
+   * OrgBluezAdapter::device-found:
+   * @object: A #OrgBluezAdapter.
+   * @arg_unnamed_arg0: Argument.
+   * @arg_unnamed_arg1: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-bluez-Adapter.DeviceFound">"DeviceFound"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("device-found",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, device_found),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+  /**
+   * OrgBluezAdapter::device-disappeared:
+   * @object: A #OrgBluezAdapter.
+   * @arg_unnamed_arg0: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-bluez-Adapter.DeviceDisappeared">"DeviceDisappeared"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("device-disappeared",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezAdapterIface, device_disappeared),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+}
+
+typedef OrgBluezAdapterIface OrgBluezAdapterInterface;
+G_DEFINE_INTERFACE (OrgBluezAdapter, org_bluez_adapter, G_TYPE_OBJECT);
+
+/**
+ * org_bluez_adapter_emit_property_changed:
+ * @object: A #OrgBluezAdapter.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ * @arg_unnamed_arg1: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-bluez-Adapter.PropertyChanged">"PropertyChanged"</link> D-Bus signal.
+ */
+void
+org_bluez_adapter_emit_property_changed (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1)
+{
+  g_signal_emit_by_name (object, "property-changed", arg_unnamed_arg0, arg_unnamed_arg1);
+}
+
+/**
+ * org_bluez_adapter_emit_device_created:
+ * @object: A #OrgBluezAdapter.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-bluez-Adapter.DeviceCreated">"DeviceCreated"</link> D-Bus signal.
+ */
+void
+org_bluez_adapter_emit_device_created (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0)
+{
+  g_signal_emit_by_name (object, "device-created", arg_unnamed_arg0);
+}
+
+/**
+ * org_bluez_adapter_emit_device_removed:
+ * @object: A #OrgBluezAdapter.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-bluez-Adapter.DeviceRemoved">"DeviceRemoved"</link> D-Bus signal.
+ */
+void
+org_bluez_adapter_emit_device_removed (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0)
+{
+  g_signal_emit_by_name (object, "device-removed", arg_unnamed_arg0);
+}
+
+/**
+ * org_bluez_adapter_emit_device_found:
+ * @object: A #OrgBluezAdapter.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ * @arg_unnamed_arg1: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-bluez-Adapter.DeviceFound">"DeviceFound"</link> D-Bus signal.
+ */
+void
+org_bluez_adapter_emit_device_found (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1)
+{
+  g_signal_emit_by_name (object, "device-found", arg_unnamed_arg0, arg_unnamed_arg1);
+}
+
+/**
+ * org_bluez_adapter_emit_device_disappeared:
+ * @object: A #OrgBluezAdapter.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-bluez-Adapter.DeviceDisappeared">"DeviceDisappeared"</link> D-Bus signal.
+ */
+void
+org_bluez_adapter_emit_device_disappeared (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0)
+{
+  g_signal_emit_by_name (object, "device-disappeared", arg_unnamed_arg0);
+}
+
+/**
+ * org_bluez_adapter_call_get_properties:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.GetProperties">GetProperties()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_get_properties_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_get_properties_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_get_properties (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_get_properties_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_get_properties().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_get_properties().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_get_properties_finish (
+    OrgBluezAdapter *proxy,
+    GVariant **out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_unnamed_arg0);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_get_properties_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.GetProperties">GetProperties()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_get_properties() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_get_properties_sync (
+    OrgBluezAdapter *proxy,
+    GVariant **out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_unnamed_arg0);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_set_property:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @arg_unnamed_arg1: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.SetProperty">SetProperty()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_set_property_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_set_property_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_set_property (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "SetProperty",
+    g_variant_new ("(s@v)",
+                   arg_unnamed_arg0,
+                   arg_unnamed_arg1),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_set_property_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_set_property().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_set_property().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_set_property_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_set_property_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @arg_unnamed_arg1: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.SetProperty">SetProperty()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_set_property() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_set_property_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "SetProperty",
+    g_variant_new ("(s@v)",
+                   arg_unnamed_arg0,
+                   arg_unnamed_arg1),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_request_session:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.RequestSession">RequestSession()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_request_session_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_request_session_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_request_session (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "RequestSession",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_request_session_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_request_session().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_request_session().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_request_session_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_request_session_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.RequestSession">RequestSession()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_request_session() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_request_session_sync (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "RequestSession",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_release_session:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.ReleaseSession">ReleaseSession()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_release_session_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_release_session_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_release_session (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "ReleaseSession",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_release_session_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_release_session().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_release_session().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_release_session_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_release_session_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.ReleaseSession">ReleaseSession()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_release_session() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_release_session_sync (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "ReleaseSession",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_start_discovery:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.StartDiscovery">StartDiscovery()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_start_discovery_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_start_discovery_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_start_discovery (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "StartDiscovery",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_start_discovery_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_start_discovery().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_start_discovery().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_start_discovery_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_start_discovery_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.StartDiscovery">StartDiscovery()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_start_discovery() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_start_discovery_sync (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "StartDiscovery",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_stop_discovery:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.StopDiscovery">StopDiscovery()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_stop_discovery_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_stop_discovery_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_stop_discovery (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "StopDiscovery",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_stop_discovery_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_stop_discovery().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_stop_discovery().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_stop_discovery_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_stop_discovery_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.StopDiscovery">StopDiscovery()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_stop_discovery() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_stop_discovery_sync (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "StopDiscovery",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_list_devices:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.ListDevices">ListDevices()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_list_devices_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_list_devices_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_list_devices (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "ListDevices",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_list_devices_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_list_devices().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_list_devices().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_list_devices_finish (
+    OrgBluezAdapter *proxy,
+    gchar ***out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(^ao)",
+                 out_unnamed_arg0);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_list_devices_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.ListDevices">ListDevices()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_list_devices() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_list_devices_sync (
+    OrgBluezAdapter *proxy,
+    gchar ***out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "ListDevices",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(^ao)",
+                 out_unnamed_arg0);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_create_device:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.CreateDevice">CreateDevice()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_create_device_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_create_device_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_create_device (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "CreateDevice",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_create_device_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @out_unnamed_arg1: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_create_device().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_create_device().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_create_device_finish (
+    OrgBluezAdapter *proxy,
+    gchar **out_unnamed_arg1,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_unnamed_arg1);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_create_device_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @out_unnamed_arg1: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.CreateDevice">CreateDevice()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_create_device() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_create_device_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    gchar **out_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "CreateDevice",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_unnamed_arg1);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_create_paired_device:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @arg_unnamed_arg1: Argument to pass with the method invocation.
+ * @arg_unnamed_arg2: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.CreatePairedDevice">CreatePairedDevice()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_create_paired_device_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_create_paired_device_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_create_paired_device (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    const gchar *arg_unnamed_arg1,
+    const gchar *arg_unnamed_arg2,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "CreatePairedDevice",
+    g_variant_new ("(sos)",
+                   arg_unnamed_arg0,
+                   arg_unnamed_arg1,
+                   arg_unnamed_arg2),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_create_paired_device_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @out_unnamed_arg3: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_create_paired_device().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_create_paired_device().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_create_paired_device_finish (
+    OrgBluezAdapter *proxy,
+    gchar **out_unnamed_arg3,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_unnamed_arg3);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_create_paired_device_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @arg_unnamed_arg1: Argument to pass with the method invocation.
+ * @arg_unnamed_arg2: Argument to pass with the method invocation.
+ * @out_unnamed_arg3: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.CreatePairedDevice">CreatePairedDevice()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_create_paired_device() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_create_paired_device_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    const gchar *arg_unnamed_arg1,
+    const gchar *arg_unnamed_arg2,
+    gchar **out_unnamed_arg3,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "CreatePairedDevice",
+    g_variant_new ("(sos)",
+                   arg_unnamed_arg0,
+                   arg_unnamed_arg1,
+                   arg_unnamed_arg2),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_unnamed_arg3);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_cancel_device_creation:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.CancelDeviceCreation">CancelDeviceCreation()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_cancel_device_creation_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_cancel_device_creation_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_cancel_device_creation (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "CancelDeviceCreation",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_cancel_device_creation_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_cancel_device_creation().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_cancel_device_creation().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_cancel_device_creation_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_cancel_device_creation_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.CancelDeviceCreation">CancelDeviceCreation()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_cancel_device_creation() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_cancel_device_creation_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "CancelDeviceCreation",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_remove_device:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.RemoveDevice">RemoveDevice()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_remove_device_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_remove_device_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_remove_device (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "RemoveDevice",
+    g_variant_new ("(o)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_remove_device_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_remove_device().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_remove_device().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_remove_device_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_remove_device_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.RemoveDevice">RemoveDevice()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_remove_device() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_remove_device_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "RemoveDevice",
+    g_variant_new ("(o)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_find_device:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.FindDevice">FindDevice()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_find_device_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_find_device_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_find_device (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "FindDevice",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_find_device_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @out_unnamed_arg1: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_find_device().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_find_device().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_find_device_finish (
+    OrgBluezAdapter *proxy,
+    gchar **out_unnamed_arg1,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_unnamed_arg1);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_find_device_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @out_unnamed_arg1: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.FindDevice">FindDevice()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_find_device() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_find_device_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    gchar **out_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "FindDevice",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_unnamed_arg1);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_register_agent:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @arg_unnamed_arg1: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.RegisterAgent">RegisterAgent()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_register_agent_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_register_agent_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_register_agent (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    const gchar *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "RegisterAgent",
+    g_variant_new ("(os)",
+                   arg_unnamed_arg0,
+                   arg_unnamed_arg1),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_register_agent_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_register_agent().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_register_agent().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_register_agent_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_register_agent_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @arg_unnamed_arg1: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.RegisterAgent">RegisterAgent()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_register_agent() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_register_agent_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    const gchar *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "RegisterAgent",
+    g_variant_new ("(os)",
+                   arg_unnamed_arg0,
+                   arg_unnamed_arg1),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_unregister_agent:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.UnregisterAgent">UnregisterAgent()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_call_unregister_agent_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_call_unregister_agent_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_adapter_call_unregister_agent (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "UnregisterAgent",
+    g_variant_new ("(o)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_adapter_call_unregister_agent_finish:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_call_unregister_agent().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_adapter_call_unregister_agent().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_unregister_agent_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_call_unregister_agent_sync:
+ * @proxy: A #OrgBluezAdapterProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Adapter.UnregisterAgent">UnregisterAgent()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_call_unregister_agent() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_adapter_call_unregister_agent_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "UnregisterAgent",
+    g_variant_new ("(o)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_adapter_complete_get_properties:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @unnamed_arg0: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.GetProperties">GetProperties()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_get_properties (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg0)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a{sv})",
+                   unnamed_arg0));
+}
+
+/**
+ * org_bluez_adapter_complete_set_property:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.SetProperty">SetProperty()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_set_property (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * org_bluez_adapter_complete_request_session:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.RequestSession">RequestSession()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_request_session (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * org_bluez_adapter_complete_release_session:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.ReleaseSession">ReleaseSession()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_release_session (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * org_bluez_adapter_complete_start_discovery:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.StartDiscovery">StartDiscovery()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_start_discovery (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * org_bluez_adapter_complete_stop_discovery:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.StopDiscovery">StopDiscovery()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_stop_discovery (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * org_bluez_adapter_complete_list_devices:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @unnamed_arg0: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.ListDevices">ListDevices()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_list_devices (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *const *unnamed_arg0)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(^ao)",
+                   unnamed_arg0));
+}
+
+/**
+ * org_bluez_adapter_complete_create_device:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @unnamed_arg1: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.CreateDevice">CreateDevice()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_create_device (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *unnamed_arg1)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(o)",
+                   unnamed_arg1));
+}
+
+/**
+ * org_bluez_adapter_complete_create_paired_device:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @unnamed_arg3: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.CreatePairedDevice">CreatePairedDevice()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_create_paired_device (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *unnamed_arg3)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(o)",
+                   unnamed_arg3));
+}
+
+/**
+ * org_bluez_adapter_complete_cancel_device_creation:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.CancelDeviceCreation">CancelDeviceCreation()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_cancel_device_creation (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * org_bluez_adapter_complete_remove_device:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.RemoveDevice">RemoveDevice()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_remove_device (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * org_bluez_adapter_complete_find_device:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @unnamed_arg1: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.FindDevice">FindDevice()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_find_device (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *unnamed_arg1)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(o)",
+                   unnamed_arg1));
+}
+
+/**
+ * org_bluez_adapter_complete_register_agent:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.RegisterAgent">RegisterAgent()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_register_agent (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * org_bluez_adapter_complete_unregister_agent:
+ * @object: A #OrgBluezAdapter.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Adapter.UnregisterAgent">UnregisterAgent()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_adapter_complete_unregister_agent (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgBluezAdapterProxy:
+ *
+ * The #OrgBluezAdapterProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgBluezAdapterProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgBluezAdapterProxy.
+ */
+
+struct _OrgBluezAdapterProxyPrivate
+{
+  GData *qdata;
+};
+
+static void org_bluez_adapter_proxy_iface_init (OrgBluezAdapterIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (OrgBluezAdapterProxy, org_bluez_adapter_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (TYPE_ORG_BLUEZ_ADAPTER, org_bluez_adapter_proxy_iface_init));
+
+static void
+org_bluez_adapter_proxy_finalize (GObject *object)
+{
+  OrgBluezAdapterProxy *proxy = ORG_BLUEZ_ADAPTER_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (org_bluez_adapter_proxy_parent_class)->finalize (object);
+}
+
+static void
+org_bluez_adapter_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_bluez_adapter_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_bluez_adapter_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_bluez_adapter_interface_info, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], TYPE_ORG_BLUEZ_ADAPTER);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_BLUEZ_ADAPTER);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+org_bluez_adapter_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OrgBluezAdapterProxy *proxy = ORG_BLUEZ_ADAPTER_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_bluez_adapter_interface_info, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_bluez_adapter_interface_info, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+org_bluez_adapter_proxy_init (OrgBluezAdapterProxy *proxy)
+{
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_BLUEZ_ADAPTER_PROXY, OrgBluezAdapterProxyPrivate);
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_bluez_adapter_interface_info ());
+}
+
+static void
+org_bluez_adapter_proxy_class_init (OrgBluezAdapterProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  g_type_class_add_private (klass, sizeof (OrgBluezAdapterProxyPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = org_bluez_adapter_proxy_finalize;
+  gobject_class->get_property = org_bluez_adapter_proxy_get_property;
+  gobject_class->set_property = org_bluez_adapter_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = org_bluez_adapter_proxy_g_signal;
+  proxy_class->g_properties_changed = org_bluez_adapter_proxy_g_properties_changed;
+
+}
+
+static void
+org_bluez_adapter_proxy_iface_init (OrgBluezAdapterIface *iface)
+{
+}
+
+/**
+ * org_bluez_adapter_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Adapter.top_of_page">org.bluez.Adapter</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_proxy_new_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_bluez_adapter_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (TYPE_ORG_BLUEZ_ADAPTER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.bluez.Adapter", NULL);
+}
+
+/**
+ * org_bluez_adapter_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_bluez_adapter_proxy_new().
+ *
+ * Returns: (transfer full) (type OrgBluezAdapterProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgBluezAdapter *
+org_bluez_adapter_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return ORG_BLUEZ_ADAPTER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_bluez_adapter_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Adapter.top_of_page">org.bluez.Adapter</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgBluezAdapterProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgBluezAdapter *
+org_bluez_adapter_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (TYPE_ORG_BLUEZ_ADAPTER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.bluez.Adapter", NULL);
+  if (ret != NULL)
+    return ORG_BLUEZ_ADAPTER (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * org_bluez_adapter_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like org_bluez_adapter_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_adapter_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See org_bluez_adapter_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_bluez_adapter_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (TYPE_ORG_BLUEZ_ADAPTER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.bluez.Adapter", NULL);
+}
+
+/**
+ * org_bluez_adapter_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_adapter_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_bluez_adapter_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OrgBluezAdapterProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgBluezAdapter *
+org_bluez_adapter_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return ORG_BLUEZ_ADAPTER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_bluez_adapter_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like org_bluez_adapter_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_adapter_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgBluezAdapterProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgBluezAdapter *
+org_bluez_adapter_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (TYPE_ORG_BLUEZ_ADAPTER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.bluez.Adapter", NULL);
+  if (ret != NULL)
+    return ORG_BLUEZ_ADAPTER (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgBluezAdapterSkeleton:
+ *
+ * The #OrgBluezAdapterSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgBluezAdapterSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgBluezAdapterSkeleton.
+ */
+
+struct _OrgBluezAdapterSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_org_bluez_adapter_skeleton_handle_method_call (
+  GDBusConnection *connection,
+  const gchar *sender,
+  const gchar *object_path,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OrgBluezAdapterSkeleton *skeleton = ORG_BLUEZ_ADAPTER_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], TYPE_ORG_BLUEZ_ADAPTER);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_BLUEZ_ADAPTER);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_org_bluez_adapter_skeleton_handle_get_property (
+  GDBusConnection *connection,
+  const gchar *sender,
+  const gchar *object_path,
+  const gchar *interface_name,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OrgBluezAdapterSkeleton *skeleton = ORG_BLUEZ_ADAPTER_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_bluez_adapter_interface_info, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_org_bluez_adapter_skeleton_handle_set_property (
+  GDBusConnection *connection,
+  const gchar *sender,
+  const gchar *object_path,
+  const gchar *interface_name,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OrgBluezAdapterSkeleton *skeleton = ORG_BLUEZ_ADAPTER_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_bluez_adapter_interface_info, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _org_bluez_adapter_skeleton_vtable =
+{
+  _org_bluez_adapter_skeleton_handle_method_call,
+  _org_bluez_adapter_skeleton_handle_get_property,
+  _org_bluez_adapter_skeleton_handle_set_property
+};
+
+static GDBusInterfaceInfo *
+org_bluez_adapter_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton)
+{
+  return org_bluez_adapter_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+org_bluez_adapter_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton)
+{
+  return (GDBusInterfaceVTable *) &_org_bluez_adapter_skeleton_vtable;
+}
+
+static GVariant *
+org_bluez_adapter_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OrgBluezAdapterSkeleton *skeleton = ORG_BLUEZ_ADAPTER_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_org_bluez_adapter_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _org_bluez_adapter_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _org_bluez_adapter_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _org_bluez_adapter_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.bluez.Adapter", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+org_bluez_adapter_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_org_bluez_adapter_on_signal_property_changed (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1)
+{
+  OrgBluezAdapterSkeleton *skeleton = ORG_BLUEZ_ADAPTER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(s@v)",
+                   arg_unnamed_arg0,
+                   arg_unnamed_arg1));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.bluez.Adapter", "PropertyChanged",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_org_bluez_adapter_on_signal_device_created (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0)
+{
+  OrgBluezAdapterSkeleton *skeleton = ORG_BLUEZ_ADAPTER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(o)",
+                   arg_unnamed_arg0));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.bluez.Adapter", "DeviceCreated",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_org_bluez_adapter_on_signal_device_removed (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0)
+{
+  OrgBluezAdapterSkeleton *skeleton = ORG_BLUEZ_ADAPTER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(o)",
+                   arg_unnamed_arg0));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.bluez.Adapter", "DeviceRemoved",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_org_bluez_adapter_on_signal_device_found (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1)
+{
+  OrgBluezAdapterSkeleton *skeleton = ORG_BLUEZ_ADAPTER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(s@a{sv})",
+                   arg_unnamed_arg0,
+                   arg_unnamed_arg1));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.bluez.Adapter", "DeviceFound",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_org_bluez_adapter_on_signal_device_disappeared (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0)
+{
+  OrgBluezAdapterSkeleton *skeleton = ORG_BLUEZ_ADAPTER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
+                   arg_unnamed_arg0));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.bluez.Adapter", "DeviceDisappeared",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void org_bluez_adapter_skeleton_iface_init (OrgBluezAdapterIface *iface);
+G_DEFINE_TYPE_WITH_CODE (OrgBluezAdapterSkeleton, org_bluez_adapter_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (TYPE_ORG_BLUEZ_ADAPTER, org_bluez_adapter_skeleton_iface_init));
+
+static void
+org_bluez_adapter_skeleton_finalize (GObject *object)
+{
+  OrgBluezAdapterSkeleton *skeleton = ORG_BLUEZ_ADAPTER_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (org_bluez_adapter_skeleton_parent_class)->finalize (object);
+}
+
+static void
+org_bluez_adapter_skeleton_init (OrgBluezAdapterSkeleton *skeleton)
+{
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_BLUEZ_ADAPTER_SKELETON, OrgBluezAdapterSkeletonPrivate);
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+org_bluez_adapter_skeleton_class_init (OrgBluezAdapterSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  g_type_class_add_private (klass, sizeof (OrgBluezAdapterSkeletonPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = org_bluez_adapter_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = org_bluez_adapter_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = org_bluez_adapter_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = org_bluez_adapter_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = org_bluez_adapter_skeleton_dbus_interface_get_vtable;
+}
+
+static void
+org_bluez_adapter_skeleton_iface_init (OrgBluezAdapterIface *iface)
+{
+  iface->property_changed = _org_bluez_adapter_on_signal_property_changed;
+  iface->device_created = _org_bluez_adapter_on_signal_device_created;
+  iface->device_removed = _org_bluez_adapter_on_signal_device_removed;
+  iface->device_found = _org_bluez_adapter_on_signal_device_found;
+  iface->device_disappeared = _org_bluez_adapter_on_signal_device_disappeared;
+}
+
+/**
+ * org_bluez_adapter_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Adapter.top_of_page">org.bluez.Adapter</link>.
+ *
+ * Returns: (transfer full) (type OrgBluezAdapterSkeleton): The skeleton object.
+ */
+OrgBluezAdapter *
+org_bluez_adapter_skeleton_new (void)
+{
+  return ORG_BLUEZ_ADAPTER (g_object_new (TYPE_ORG_BLUEZ_ADAPTER_SKELETON, NULL));
+}
+
diff --git a/plugins/obd2plugin/bluetoothadapterproxy.h b/plugins/obd2plugin/bluetoothadapterproxy.h
new file mode 100644 (file)
index 0000000..9d431d1
--- /dev/null
@@ -0,0 +1,578 @@
+/*
+ * Generated by gdbus-codegen 2.32.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __BLUETOOTHADAPTERPROXY_H__
+#define __BLUETOOTHADAPTERPROXY_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.bluez.Adapter */
+
+#define TYPE_ORG_BLUEZ_ADAPTER (org_bluez_adapter_get_type ())
+#define ORG_BLUEZ_ADAPTER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_BLUEZ_ADAPTER, OrgBluezAdapter))
+#define IS_ORG_BLUEZ_ADAPTER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_BLUEZ_ADAPTER))
+#define ORG_BLUEZ_ADAPTER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_BLUEZ_ADAPTER, OrgBluezAdapterIface))
+
+struct _OrgBluezAdapter;
+typedef struct _OrgBluezAdapter OrgBluezAdapter;
+typedef struct _OrgBluezAdapterIface OrgBluezAdapterIface;
+
+struct _OrgBluezAdapterIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_cancel_device_creation) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0);
+
+  gboolean (*handle_create_device) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0);
+
+  gboolean (*handle_create_paired_device) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0,
+    const gchar *arg_unnamed_arg1,
+    const gchar *arg_unnamed_arg2);
+
+  gboolean (*handle_find_device) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0);
+
+  gboolean (*handle_get_properties) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_list_devices) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_register_agent) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0,
+    const gchar *arg_unnamed_arg1);
+
+  gboolean (*handle_release_session) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_remove_device) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0);
+
+  gboolean (*handle_request_session) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_set_property) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+  gboolean (*handle_start_discovery) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_stop_discovery) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_unregister_agent) (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0);
+
+  void (*device_created) (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0);
+
+  void (*device_disappeared) (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0);
+
+  void (*device_found) (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+  void (*device_removed) (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0);
+
+  void (*property_changed) (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+};
+
+GType org_bluez_adapter_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *org_bluez_adapter_interface_info (void);
+guint org_bluez_adapter_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void org_bluez_adapter_complete_get_properties (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg0);
+
+void org_bluez_adapter_complete_set_property (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+void org_bluez_adapter_complete_request_session (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+void org_bluez_adapter_complete_release_session (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+void org_bluez_adapter_complete_start_discovery (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+void org_bluez_adapter_complete_stop_discovery (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+void org_bluez_adapter_complete_list_devices (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *const *unnamed_arg0);
+
+void org_bluez_adapter_complete_create_device (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *unnamed_arg1);
+
+void org_bluez_adapter_complete_create_paired_device (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *unnamed_arg3);
+
+void org_bluez_adapter_complete_cancel_device_creation (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+void org_bluez_adapter_complete_remove_device (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+void org_bluez_adapter_complete_find_device (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *unnamed_arg1);
+
+void org_bluez_adapter_complete_register_agent (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+void org_bluez_adapter_complete_unregister_agent (
+    OrgBluezAdapter *object,
+    GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus signal emissions functions: */
+void org_bluez_adapter_emit_property_changed (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+void org_bluez_adapter_emit_device_created (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0);
+
+void org_bluez_adapter_emit_device_removed (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0);
+
+void org_bluez_adapter_emit_device_found (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+void org_bluez_adapter_emit_device_disappeared (
+    OrgBluezAdapter *object,
+    const gchar *arg_unnamed_arg0);
+
+
+
+/* D-Bus method calls: */
+void org_bluez_adapter_call_get_properties (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_get_properties_finish (
+    OrgBluezAdapter *proxy,
+    GVariant **out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_get_properties_sync (
+    OrgBluezAdapter *proxy,
+    GVariant **out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_adapter_call_set_property (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_set_property_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_set_property_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_adapter_call_request_session (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_request_session_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_request_session_sync (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_adapter_call_release_session (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_release_session_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_release_session_sync (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_adapter_call_start_discovery (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_start_discovery_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_start_discovery_sync (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_adapter_call_stop_discovery (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_stop_discovery_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_stop_discovery_sync (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_adapter_call_list_devices (
+    OrgBluezAdapter *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_list_devices_finish (
+    OrgBluezAdapter *proxy,
+    gchar ***out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_list_devices_sync (
+    OrgBluezAdapter *proxy,
+    gchar ***out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_adapter_call_create_device (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_create_device_finish (
+    OrgBluezAdapter *proxy,
+    gchar **out_unnamed_arg1,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_create_device_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    gchar **out_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_adapter_call_create_paired_device (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    const gchar *arg_unnamed_arg1,
+    const gchar *arg_unnamed_arg2,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_create_paired_device_finish (
+    OrgBluezAdapter *proxy,
+    gchar **out_unnamed_arg3,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_create_paired_device_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    const gchar *arg_unnamed_arg1,
+    const gchar *arg_unnamed_arg2,
+    gchar **out_unnamed_arg3,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_adapter_call_cancel_device_creation (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_cancel_device_creation_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_cancel_device_creation_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_adapter_call_remove_device (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_remove_device_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_remove_device_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_adapter_call_find_device (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_find_device_finish (
+    OrgBluezAdapter *proxy,
+    gchar **out_unnamed_arg1,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_find_device_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    gchar **out_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_adapter_call_register_agent (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    const gchar *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_register_agent_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_register_agent_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    const gchar *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_adapter_call_unregister_agent (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_adapter_call_unregister_agent_finish (
+    OrgBluezAdapter *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_adapter_call_unregister_agent_sync (
+    OrgBluezAdapter *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define TYPE_ORG_BLUEZ_ADAPTER_PROXY (org_bluez_adapter_proxy_get_type ())
+#define ORG_BLUEZ_ADAPTER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_BLUEZ_ADAPTER_PROXY, OrgBluezAdapterProxy))
+#define ORG_BLUEZ_ADAPTER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_BLUEZ_ADAPTER_PROXY, OrgBluezAdapterProxyClass))
+#define ORG_BLUEZ_ADAPTER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_BLUEZ_ADAPTER_PROXY, OrgBluezAdapterProxyClass))
+#define IS_ORG_BLUEZ_ADAPTER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_BLUEZ_ADAPTER_PROXY))
+#define IS_ORG_BLUEZ_ADAPTER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_BLUEZ_ADAPTER_PROXY))
+
+typedef struct _OrgBluezAdapterProxy OrgBluezAdapterProxy;
+typedef struct _OrgBluezAdapterProxyClass OrgBluezAdapterProxyClass;
+typedef struct _OrgBluezAdapterProxyPrivate OrgBluezAdapterProxyPrivate;
+
+struct _OrgBluezAdapterProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OrgBluezAdapterProxyPrivate *priv;
+};
+
+struct _OrgBluezAdapterProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType org_bluez_adapter_proxy_get_type (void) G_GNUC_CONST;
+
+void org_bluez_adapter_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OrgBluezAdapter *org_bluez_adapter_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OrgBluezAdapter *org_bluez_adapter_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void org_bluez_adapter_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OrgBluezAdapter *org_bluez_adapter_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OrgBluezAdapter *org_bluez_adapter_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define TYPE_ORG_BLUEZ_ADAPTER_SKELETON (org_bluez_adapter_skeleton_get_type ())
+#define ORG_BLUEZ_ADAPTER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_BLUEZ_ADAPTER_SKELETON, OrgBluezAdapterSkeleton))
+#define ORG_BLUEZ_ADAPTER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_BLUEZ_ADAPTER_SKELETON, OrgBluezAdapterSkeletonClass))
+#define ORG_BLUEZ_ADAPTER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_BLUEZ_ADAPTER_SKELETON, OrgBluezAdapterSkeletonClass))
+#define IS_ORG_BLUEZ_ADAPTER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_BLUEZ_ADAPTER_SKELETON))
+#define IS_ORG_BLUEZ_ADAPTER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_BLUEZ_ADAPTER_SKELETON))
+
+typedef struct _OrgBluezAdapterSkeleton OrgBluezAdapterSkeleton;
+typedef struct _OrgBluezAdapterSkeletonClass OrgBluezAdapterSkeletonClass;
+typedef struct _OrgBluezAdapterSkeletonPrivate OrgBluezAdapterSkeletonPrivate;
+
+struct _OrgBluezAdapterSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OrgBluezAdapterSkeletonPrivate *priv;
+};
+
+struct _OrgBluezAdapterSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType org_bluez_adapter_skeleton_get_type (void) G_GNUC_CONST;
+
+OrgBluezAdapter *org_bluez_adapter_skeleton_new (void);
+
+
+G_END_DECLS
+
+#endif /* __BLUETOOTHADAPTERPROXY_H__ */
diff --git a/plugins/obd2plugin/bluetoothmanagerproxy.c b/plugins/obd2plugin/bluetoothmanagerproxy.c
new file mode 100644 (file)
index 0000000..f4f0d14
--- /dev/null
@@ -0,0 +1,1941 @@
+/*
+ * Generated by gdbus-codegen 2.32.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include "bluetoothmanagerproxy.h"
+
+#ifdef G_OS_UNIX
+#  include <gio/gunixfdlist.h>
+#endif
+
+typedef struct
+{
+  GDBusArgInfo parent_struct;
+  gboolean use_gvariant;
+} _ExtendedGDBusArgInfo;
+
+typedef struct
+{
+  GDBusMethodInfo parent_struct;
+  const gchar *signal_name;
+  gboolean pass_fdlist;
+} _ExtendedGDBusMethodInfo;
+
+typedef struct
+{
+  GDBusSignalInfo parent_struct;
+  const gchar *signal_name;
+} _ExtendedGDBusSignalInfo;
+
+typedef struct
+{
+  GDBusPropertyInfo parent_struct;
+  const gchar *hyphen_name;
+  gboolean use_gvariant;
+} _ExtendedGDBusPropertyInfo;
+
+typedef struct
+{
+  GDBusInterfaceInfo parent_struct;
+  const gchar *hyphen_name;
+} _ExtendedGDBusInterfaceInfo;
+
+typedef struct
+{
+  const _ExtendedGDBusPropertyInfo *info;
+  guint prop_id;
+  GValue orig_value; /* the value before the change */
+} ChangedProperty;
+
+static void
+_changed_property_free (ChangedProperty *data)
+{
+  g_value_unset (&data->orig_value);
+  g_free (data);
+}
+
+static gboolean
+_g_strv_equal0 (gchar **a, gchar **b)
+{
+  gboolean ret = FALSE;
+  guint n;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  if (g_strv_length (a) != g_strv_length (b))
+    goto out;
+  for (n = 0; a[n] != NULL; n++)
+    if (g_strcmp0 (a[n], b[n]) != 0)
+      goto out;
+  ret = TRUE;
+out:
+  return ret;
+}
+
+static gboolean
+_g_variant_equal0 (GVariant *a, GVariant *b)
+{
+  gboolean ret = FALSE;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  ret = g_variant_equal (a, b);
+out:
+  return ret;
+}
+
+G_GNUC_UNUSED static gboolean
+_g_value_equal (const GValue *a, const GValue *b)
+{
+  gboolean ret = FALSE;
+  g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
+  switch (G_VALUE_TYPE (a))
+    {
+      case G_TYPE_BOOLEAN:
+        ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
+        break;
+      case G_TYPE_UCHAR:
+        ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
+        break;
+      case G_TYPE_INT:
+        ret = (g_value_get_int (a) == g_value_get_int (b));
+        break;
+      case G_TYPE_UINT:
+        ret = (g_value_get_uint (a) == g_value_get_uint (b));
+        break;
+      case G_TYPE_INT64:
+        ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
+        break;
+      case G_TYPE_UINT64:
+        ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
+        break;
+      case G_TYPE_DOUBLE:
+        ret = (g_value_get_double (a) == g_value_get_double (b));
+        break;
+      case G_TYPE_STRING:
+        ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
+        break;
+      case G_TYPE_VARIANT:
+        ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
+        break;
+      default:
+        if (G_VALUE_TYPE (a) == G_TYPE_STRV)
+          ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
+        else
+          g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
+        break;
+    }
+  return ret;
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.bluez.Manager
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OrgBluezManager
+ * @title: OrgBluezManager
+ * @short_description: Generated C code for the org.bluez.Manager D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-bluez-Manager.top_of_page">org.bluez.Manager</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.bluez.Manager ---- */
+
+static const _ExtendedGDBusArgInfo _org_bluez_manager_method_info_get_properties_OUT_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_manager_method_info_get_properties_OUT_ARG_pointers[] =
+{
+  &_org_bluez_manager_method_info_get_properties_OUT_ARG_unnamed_arg0,
+  NULL
+};
+
+static const GDBusAnnotationInfo _org_bluez_manager_method_get_properties_annotation_info_0 =
+{
+  -1,
+  "com.trolltech.QtDBus.QtTypeName.Out0",
+  "QVariantMap",
+  NULL
+};
+
+static const GDBusAnnotationInfo * const _org_bluez_manager_method_get_properties_annotation_info_pointers[] =
+{
+  &_org_bluez_manager_method_get_properties_annotation_info_0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_manager_method_info_get_properties =
+{
+  {
+    -1,
+    "GetProperties",
+    NULL,
+    (GDBusArgInfo **) &_org_bluez_manager_method_info_get_properties_OUT_ARG_pointers,
+    (GDBusAnnotationInfo **) &_org_bluez_manager_method_get_properties_annotation_info_pointers
+  },
+  "handle-get-properties",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_manager_method_info_default_adapter_OUT_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_manager_method_info_default_adapter_OUT_ARG_pointers[] =
+{
+  &_org_bluez_manager_method_info_default_adapter_OUT_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_manager_method_info_default_adapter =
+{
+  {
+    -1,
+    "DefaultAdapter",
+    NULL,
+    (GDBusArgInfo **) &_org_bluez_manager_method_info_default_adapter_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-default-adapter",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_manager_method_info_find_adapter_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_manager_method_info_find_adapter_IN_ARG_pointers[] =
+{
+  &_org_bluez_manager_method_info_find_adapter_IN_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_manager_method_info_find_adapter_OUT_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_manager_method_info_find_adapter_OUT_ARG_pointers[] =
+{
+  &_org_bluez_manager_method_info_find_adapter_OUT_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_manager_method_info_find_adapter =
+{
+  {
+    -1,
+    "FindAdapter",
+    (GDBusArgInfo **) &_org_bluez_manager_method_info_find_adapter_IN_ARG_pointers,
+    (GDBusArgInfo **) &_org_bluez_manager_method_info_find_adapter_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-find-adapter",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_manager_method_info_list_adapters_OUT_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "ao",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_manager_method_info_list_adapters_OUT_ARG_pointers[] =
+{
+  &_org_bluez_manager_method_info_list_adapters_OUT_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_manager_method_info_list_adapters =
+{
+  {
+    -1,
+    "ListAdapters",
+    NULL,
+    (GDBusArgInfo **) &_org_bluez_manager_method_info_list_adapters_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-list-adapters",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _org_bluez_manager_method_info_pointers[] =
+{
+  &_org_bluez_manager_method_info_get_properties,
+  &_org_bluez_manager_method_info_default_adapter,
+  &_org_bluez_manager_method_info_find_adapter,
+  &_org_bluez_manager_method_info_list_adapters,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_manager_signal_info_property_changed_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_manager_signal_info_property_changed_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_manager_signal_info_property_changed_ARG_pointers[] =
+{
+  &_org_bluez_manager_signal_info_property_changed_ARG_unnamed_arg0,
+  &_org_bluez_manager_signal_info_property_changed_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_bluez_manager_signal_info_property_changed =
+{
+  {
+    -1,
+    "PropertyChanged",
+    (GDBusArgInfo **) &_org_bluez_manager_signal_info_property_changed_ARG_pointers,
+    NULL
+  },
+  "property-changed"
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_manager_signal_info_adapter_added_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_manager_signal_info_adapter_added_ARG_pointers[] =
+{
+  &_org_bluez_manager_signal_info_adapter_added_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_bluez_manager_signal_info_adapter_added =
+{
+  {
+    -1,
+    "AdapterAdded",
+    (GDBusArgInfo **) &_org_bluez_manager_signal_info_adapter_added_ARG_pointers,
+    NULL
+  },
+  "adapter-added"
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_manager_signal_info_adapter_removed_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_manager_signal_info_adapter_removed_ARG_pointers[] =
+{
+  &_org_bluez_manager_signal_info_adapter_removed_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_bluez_manager_signal_info_adapter_removed =
+{
+  {
+    -1,
+    "AdapterRemoved",
+    (GDBusArgInfo **) &_org_bluez_manager_signal_info_adapter_removed_ARG_pointers,
+    NULL
+  },
+  "adapter-removed"
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_manager_signal_info_default_adapter_changed_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_manager_signal_info_default_adapter_changed_ARG_pointers[] =
+{
+  &_org_bluez_manager_signal_info_default_adapter_changed_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_bluez_manager_signal_info_default_adapter_changed =
+{
+  {
+    -1,
+    "DefaultAdapterChanged",
+    (GDBusArgInfo **) &_org_bluez_manager_signal_info_default_adapter_changed_ARG_pointers,
+    NULL
+  },
+  "default-adapter-changed"
+};
+
+static const _ExtendedGDBusSignalInfo * const _org_bluez_manager_signal_info_pointers[] =
+{
+  &_org_bluez_manager_signal_info_property_changed,
+  &_org_bluez_manager_signal_info_adapter_added,
+  &_org_bluez_manager_signal_info_adapter_removed,
+  &_org_bluez_manager_signal_info_default_adapter_changed,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _org_bluez_manager_interface_info =
+{
+  {
+    -1,
+    "org.bluez.Manager",
+    (GDBusMethodInfo **) &_org_bluez_manager_method_info_pointers,
+    (GDBusSignalInfo **) &_org_bluez_manager_signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "org-bluez-manager",
+};
+
+
+/**
+ * org_bluez_manager_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-bluez-Manager.top_of_page">org.bluez.Manager</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+org_bluez_manager_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_org_bluez_manager_interface_info;
+}
+
+/**
+ * org_bluez_manager_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OrgBluezManager interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+org_bluez_manager_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OrgBluezManager:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Manager.top_of_page">org.bluez.Manager</link>.
+ */
+
+/**
+ * OrgBluezManagerIface:
+ * @parent_iface: The parent interface.
+ * @handle_default_adapter: Handler for the #OrgBluezManager::handle-default-adapter signal.
+ * @handle_find_adapter: Handler for the #OrgBluezManager::handle-find-adapter signal.
+ * @handle_get_properties: Handler for the #OrgBluezManager::handle-get-properties signal.
+ * @handle_list_adapters: Handler for the #OrgBluezManager::handle-list-adapters signal.
+ * @adapter_added: Handler for the #OrgBluezManager::adapter-added signal.
+ * @adapter_removed: Handler for the #OrgBluezManager::adapter-removed signal.
+ * @default_adapter_changed: Handler for the #OrgBluezManager::default-adapter-changed signal.
+ * @property_changed: Handler for the #OrgBluezManager::property-changed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Manager.top_of_page">org.bluez.Manager</link>.
+ */
+
+static void
+org_bluez_manager_default_init (OrgBluezManagerIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OrgBluezManager::handle-get-properties:
+   * @object: A #OrgBluezManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Manager.GetProperties">GetProperties()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_manager_complete_get_properties() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-get-properties",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezManagerIface, handle_get_properties),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OrgBluezManager::handle-default-adapter:
+   * @object: A #OrgBluezManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Manager.DefaultAdapter">DefaultAdapter()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_manager_complete_default_adapter() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-default-adapter",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezManagerIface, handle_default_adapter),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * OrgBluezManager::handle-find-adapter:
+   * @object: A #OrgBluezManager.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_unnamed_arg0: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Manager.FindAdapter">FindAdapter()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_manager_complete_find_adapter() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-find-adapter",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezManagerIface, handle_find_adapter),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /**
+   * OrgBluezManager::handle-list-adapters:
+   * @object: A #OrgBluezManager.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Manager.ListAdapters">ListAdapters()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_manager_complete_list_adapters() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-list-adapters",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezManagerIface, handle_list_adapters),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * OrgBluezManager::property-changed:
+   * @object: A #OrgBluezManager.
+   * @arg_unnamed_arg0: Argument.
+   * @arg_unnamed_arg1: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-bluez-Manager.PropertyChanged">"PropertyChanged"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("property-changed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezManagerIface, property_changed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+  /**
+   * OrgBluezManager::adapter-added:
+   * @object: A #OrgBluezManager.
+   * @arg_unnamed_arg0: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-bluez-Manager.AdapterAdded">"AdapterAdded"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("adapter-added",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezManagerIface, adapter_added),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+  /**
+   * OrgBluezManager::adapter-removed:
+   * @object: A #OrgBluezManager.
+   * @arg_unnamed_arg0: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-bluez-Manager.AdapterRemoved">"AdapterRemoved"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("adapter-removed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezManagerIface, adapter_removed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+  /**
+   * OrgBluezManager::default-adapter-changed:
+   * @object: A #OrgBluezManager.
+   * @arg_unnamed_arg0: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-bluez-Manager.DefaultAdapterChanged">"DefaultAdapterChanged"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("default-adapter-changed",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezManagerIface, default_adapter_changed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+}
+
+typedef OrgBluezManagerIface OrgBluezManagerInterface;
+G_DEFINE_INTERFACE (OrgBluezManager, org_bluez_manager, G_TYPE_OBJECT);
+
+/**
+ * org_bluez_manager_emit_property_changed:
+ * @object: A #OrgBluezManager.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ * @arg_unnamed_arg1: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-bluez-Manager.PropertyChanged">"PropertyChanged"</link> D-Bus signal.
+ */
+void
+org_bluez_manager_emit_property_changed (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1)
+{
+  g_signal_emit_by_name (object, "property-changed", arg_unnamed_arg0, arg_unnamed_arg1);
+}
+
+/**
+ * org_bluez_manager_emit_adapter_added:
+ * @object: A #OrgBluezManager.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-bluez-Manager.AdapterAdded">"AdapterAdded"</link> D-Bus signal.
+ */
+void
+org_bluez_manager_emit_adapter_added (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0)
+{
+  g_signal_emit_by_name (object, "adapter-added", arg_unnamed_arg0);
+}
+
+/**
+ * org_bluez_manager_emit_adapter_removed:
+ * @object: A #OrgBluezManager.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-bluez-Manager.AdapterRemoved">"AdapterRemoved"</link> D-Bus signal.
+ */
+void
+org_bluez_manager_emit_adapter_removed (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0)
+{
+  g_signal_emit_by_name (object, "adapter-removed", arg_unnamed_arg0);
+}
+
+/**
+ * org_bluez_manager_emit_default_adapter_changed:
+ * @object: A #OrgBluezManager.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-bluez-Manager.DefaultAdapterChanged">"DefaultAdapterChanged"</link> D-Bus signal.
+ */
+void
+org_bluez_manager_emit_default_adapter_changed (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0)
+{
+  g_signal_emit_by_name (object, "default-adapter-changed", arg_unnamed_arg0);
+}
+
+/**
+ * org_bluez_manager_call_get_properties:
+ * @proxy: A #OrgBluezManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Manager.GetProperties">GetProperties()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_manager_call_get_properties_finish() to get the result of the operation.
+ *
+ * See org_bluez_manager_call_get_properties_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_manager_call_get_properties (
+    OrgBluezManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_manager_call_get_properties_finish:
+ * @proxy: A #OrgBluezManagerProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_manager_call_get_properties().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_manager_call_get_properties().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_manager_call_get_properties_finish (
+    OrgBluezManager *proxy,
+    GVariant **out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_unnamed_arg0);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_manager_call_get_properties_sync:
+ * @proxy: A #OrgBluezManagerProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Manager.GetProperties">GetProperties()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_manager_call_get_properties() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_manager_call_get_properties_sync (
+    OrgBluezManager *proxy,
+    GVariant **out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "GetProperties",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@a{sv})",
+                 out_unnamed_arg0);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_manager_call_default_adapter:
+ * @proxy: A #OrgBluezManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Manager.DefaultAdapter">DefaultAdapter()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_manager_call_default_adapter_finish() to get the result of the operation.
+ *
+ * See org_bluez_manager_call_default_adapter_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_manager_call_default_adapter (
+    OrgBluezManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "DefaultAdapter",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_manager_call_default_adapter_finish:
+ * @proxy: A #OrgBluezManagerProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_manager_call_default_adapter().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_manager_call_default_adapter().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_manager_call_default_adapter_finish (
+    OrgBluezManager *proxy,
+    gchar **out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_unnamed_arg0);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_manager_call_default_adapter_sync:
+ * @proxy: A #OrgBluezManagerProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Manager.DefaultAdapter">DefaultAdapter()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_manager_call_default_adapter() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_manager_call_default_adapter_sync (
+    OrgBluezManager *proxy,
+    gchar **out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "DefaultAdapter",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_unnamed_arg0);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_manager_call_find_adapter:
+ * @proxy: A #OrgBluezManagerProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Manager.FindAdapter">FindAdapter()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_manager_call_find_adapter_finish() to get the result of the operation.
+ *
+ * See org_bluez_manager_call_find_adapter_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_manager_call_find_adapter (
+    OrgBluezManager *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "FindAdapter",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_manager_call_find_adapter_finish:
+ * @proxy: A #OrgBluezManagerProxy.
+ * @out_unnamed_arg1: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_manager_call_find_adapter().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_manager_call_find_adapter().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_manager_call_find_adapter_finish (
+    OrgBluezManager *proxy,
+    gchar **out_unnamed_arg1,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_unnamed_arg1);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_manager_call_find_adapter_sync:
+ * @proxy: A #OrgBluezManagerProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @out_unnamed_arg1: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Manager.FindAdapter">FindAdapter()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_manager_call_find_adapter() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_manager_call_find_adapter_sync (
+    OrgBluezManager *proxy,
+    const gchar *arg_unnamed_arg0,
+    gchar **out_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "FindAdapter",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(o)",
+                 out_unnamed_arg1);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_manager_call_list_adapters:
+ * @proxy: A #OrgBluezManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Manager.ListAdapters">ListAdapters()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_manager_call_list_adapters_finish() to get the result of the operation.
+ *
+ * See org_bluez_manager_call_list_adapters_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_manager_call_list_adapters (
+    OrgBluezManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "ListAdapters",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_manager_call_list_adapters_finish:
+ * @proxy: A #OrgBluezManagerProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_manager_call_list_adapters().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_manager_call_list_adapters().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_manager_call_list_adapters_finish (
+    OrgBluezManager *proxy,
+    gchar ***out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(^ao)",
+                 out_unnamed_arg0);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_manager_call_list_adapters_sync:
+ * @proxy: A #OrgBluezManagerProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Manager.ListAdapters">ListAdapters()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_manager_call_list_adapters() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_manager_call_list_adapters_sync (
+    OrgBluezManager *proxy,
+    gchar ***out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "ListAdapters",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(^ao)",
+                 out_unnamed_arg0);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_manager_complete_get_properties:
+ * @object: A #OrgBluezManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @unnamed_arg0: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Manager.GetProperties">GetProperties()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_manager_complete_get_properties (
+    OrgBluezManager *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg0)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a{sv})",
+                   unnamed_arg0));
+}
+
+/**
+ * org_bluez_manager_complete_default_adapter:
+ * @object: A #OrgBluezManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @unnamed_arg0: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Manager.DefaultAdapter">DefaultAdapter()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_manager_complete_default_adapter (
+    OrgBluezManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *unnamed_arg0)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(o)",
+                   unnamed_arg0));
+}
+
+/**
+ * org_bluez_manager_complete_find_adapter:
+ * @object: A #OrgBluezManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @unnamed_arg1: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Manager.FindAdapter">FindAdapter()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_manager_complete_find_adapter (
+    OrgBluezManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *unnamed_arg1)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(o)",
+                   unnamed_arg1));
+}
+
+/**
+ * org_bluez_manager_complete_list_adapters:
+ * @object: A #OrgBluezManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @unnamed_arg0: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Manager.ListAdapters">ListAdapters()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_manager_complete_list_adapters (
+    OrgBluezManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *const *unnamed_arg0)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(^ao)",
+                   unnamed_arg0));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgBluezManagerProxy:
+ *
+ * The #OrgBluezManagerProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgBluezManagerProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgBluezManagerProxy.
+ */
+
+struct _OrgBluezManagerProxyPrivate
+{
+  GData *qdata;
+};
+
+static void org_bluez_manager_proxy_iface_init (OrgBluezManagerIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (OrgBluezManagerProxy, org_bluez_manager_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (TYPE_ORG_BLUEZ_MANAGER, org_bluez_manager_proxy_iface_init));
+
+static void
+org_bluez_manager_proxy_finalize (GObject *object)
+{
+  OrgBluezManagerProxy *proxy = ORG_BLUEZ_MANAGER_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (org_bluez_manager_proxy_parent_class)->finalize (object);
+}
+
+static void
+org_bluez_manager_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_bluez_manager_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_bluez_manager_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_bluez_manager_interface_info, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], TYPE_ORG_BLUEZ_MANAGER);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_BLUEZ_MANAGER);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+org_bluez_manager_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OrgBluezManagerProxy *proxy = ORG_BLUEZ_MANAGER_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_bluez_manager_interface_info, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_bluez_manager_interface_info, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+org_bluez_manager_proxy_init (OrgBluezManagerProxy *proxy)
+{
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_BLUEZ_MANAGER_PROXY, OrgBluezManagerProxyPrivate);
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_bluez_manager_interface_info ());
+}
+
+static void
+org_bluez_manager_proxy_class_init (OrgBluezManagerProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  g_type_class_add_private (klass, sizeof (OrgBluezManagerProxyPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = org_bluez_manager_proxy_finalize;
+  gobject_class->get_property = org_bluez_manager_proxy_get_property;
+  gobject_class->set_property = org_bluez_manager_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = org_bluez_manager_proxy_g_signal;
+  proxy_class->g_properties_changed = org_bluez_manager_proxy_g_properties_changed;
+
+}
+
+static void
+org_bluez_manager_proxy_iface_init (OrgBluezManagerIface *iface)
+{
+}
+
+/**
+ * org_bluez_manager_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Manager.top_of_page">org.bluez.Manager</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_manager_proxy_new_finish() to get the result of the operation.
+ *
+ * See org_bluez_manager_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_bluez_manager_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (TYPE_ORG_BLUEZ_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.bluez.Manager", NULL);
+}
+
+/**
+ * org_bluez_manager_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_manager_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_bluez_manager_proxy_new().
+ *
+ * Returns: (transfer full) (type OrgBluezManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgBluezManager *
+org_bluez_manager_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return ORG_BLUEZ_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_bluez_manager_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Manager.top_of_page">org.bluez.Manager</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_manager_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgBluezManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgBluezManager *
+org_bluez_manager_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (TYPE_ORG_BLUEZ_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.bluez.Manager", NULL);
+  if (ret != NULL)
+    return ORG_BLUEZ_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * org_bluez_manager_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like org_bluez_manager_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_manager_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See org_bluez_manager_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_bluez_manager_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (TYPE_ORG_BLUEZ_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.bluez.Manager", NULL);
+}
+
+/**
+ * org_bluez_manager_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_manager_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_bluez_manager_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OrgBluezManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgBluezManager *
+org_bluez_manager_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return ORG_BLUEZ_MANAGER (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_bluez_manager_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like org_bluez_manager_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_manager_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgBluezManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgBluezManager *
+org_bluez_manager_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (TYPE_ORG_BLUEZ_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.bluez.Manager", NULL);
+  if (ret != NULL)
+    return ORG_BLUEZ_MANAGER (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgBluezManagerSkeleton:
+ *
+ * The #OrgBluezManagerSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgBluezManagerSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgBluezManagerSkeleton.
+ */
+
+struct _OrgBluezManagerSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_org_bluez_manager_skeleton_handle_method_call (
+  GDBusConnection *connection,
+  const gchar *sender,
+  const gchar *object_path,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OrgBluezManagerSkeleton *skeleton = ORG_BLUEZ_MANAGER_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], TYPE_ORG_BLUEZ_MANAGER);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_BLUEZ_MANAGER);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_org_bluez_manager_skeleton_handle_get_property (
+  GDBusConnection *connection,
+  const gchar *sender,
+  const gchar *object_path,
+  const gchar *interface_name,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OrgBluezManagerSkeleton *skeleton = ORG_BLUEZ_MANAGER_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_bluez_manager_interface_info, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_org_bluez_manager_skeleton_handle_set_property (
+  GDBusConnection *connection,
+  const gchar *sender,
+  const gchar *object_path,
+  const gchar *interface_name,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OrgBluezManagerSkeleton *skeleton = ORG_BLUEZ_MANAGER_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_bluez_manager_interface_info, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _org_bluez_manager_skeleton_vtable =
+{
+  _org_bluez_manager_skeleton_handle_method_call,
+  _org_bluez_manager_skeleton_handle_get_property,
+  _org_bluez_manager_skeleton_handle_set_property
+};
+
+static GDBusInterfaceInfo *
+org_bluez_manager_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton)
+{
+  return org_bluez_manager_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+org_bluez_manager_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton)
+{
+  return (GDBusInterfaceVTable *) &_org_bluez_manager_skeleton_vtable;
+}
+
+static GVariant *
+org_bluez_manager_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OrgBluezManagerSkeleton *skeleton = ORG_BLUEZ_MANAGER_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_org_bluez_manager_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _org_bluez_manager_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _org_bluez_manager_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _org_bluez_manager_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.bluez.Manager", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+org_bluez_manager_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_org_bluez_manager_on_signal_property_changed (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1)
+{
+  OrgBluezManagerSkeleton *skeleton = ORG_BLUEZ_MANAGER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(s@v)",
+                   arg_unnamed_arg0,
+                   arg_unnamed_arg1));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.bluez.Manager", "PropertyChanged",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_org_bluez_manager_on_signal_adapter_added (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0)
+{
+  OrgBluezManagerSkeleton *skeleton = ORG_BLUEZ_MANAGER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(o)",
+                   arg_unnamed_arg0));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.bluez.Manager", "AdapterAdded",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_org_bluez_manager_on_signal_adapter_removed (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0)
+{
+  OrgBluezManagerSkeleton *skeleton = ORG_BLUEZ_MANAGER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(o)",
+                   arg_unnamed_arg0));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.bluez.Manager", "AdapterRemoved",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_org_bluez_manager_on_signal_default_adapter_changed (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0)
+{
+  OrgBluezManagerSkeleton *skeleton = ORG_BLUEZ_MANAGER_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(o)",
+                   arg_unnamed_arg0));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.bluez.Manager", "DefaultAdapterChanged",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void org_bluez_manager_skeleton_iface_init (OrgBluezManagerIface *iface);
+G_DEFINE_TYPE_WITH_CODE (OrgBluezManagerSkeleton, org_bluez_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (TYPE_ORG_BLUEZ_MANAGER, org_bluez_manager_skeleton_iface_init));
+
+static void
+org_bluez_manager_skeleton_finalize (GObject *object)
+{
+  OrgBluezManagerSkeleton *skeleton = ORG_BLUEZ_MANAGER_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (org_bluez_manager_skeleton_parent_class)->finalize (object);
+}
+
+static void
+org_bluez_manager_skeleton_init (OrgBluezManagerSkeleton *skeleton)
+{
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_BLUEZ_MANAGER_SKELETON, OrgBluezManagerSkeletonPrivate);
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+org_bluez_manager_skeleton_class_init (OrgBluezManagerSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  g_type_class_add_private (klass, sizeof (OrgBluezManagerSkeletonPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = org_bluez_manager_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = org_bluez_manager_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = org_bluez_manager_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = org_bluez_manager_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = org_bluez_manager_skeleton_dbus_interface_get_vtable;
+}
+
+static void
+org_bluez_manager_skeleton_iface_init (OrgBluezManagerIface *iface)
+{
+  iface->property_changed = _org_bluez_manager_on_signal_property_changed;
+  iface->adapter_added = _org_bluez_manager_on_signal_adapter_added;
+  iface->adapter_removed = _org_bluez_manager_on_signal_adapter_removed;
+  iface->default_adapter_changed = _org_bluez_manager_on_signal_default_adapter_changed;
+}
+
+/**
+ * org_bluez_manager_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Manager.top_of_page">org.bluez.Manager</link>.
+ *
+ * Returns: (transfer full) (type OrgBluezManagerSkeleton): The skeleton object.
+ */
+OrgBluezManager *
+org_bluez_manager_skeleton_new (void)
+{
+  return ORG_BLUEZ_MANAGER (g_object_new (TYPE_ORG_BLUEZ_MANAGER_SKELETON, NULL));
+}
+
diff --git a/plugins/obd2plugin/bluetoothmanagerproxy.h b/plugins/obd2plugin/bluetoothmanagerproxy.h
new file mode 100644 (file)
index 0000000..fd9b02f
--- /dev/null
@@ -0,0 +1,292 @@
+/*
+ * Generated by gdbus-codegen 2.32.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __BLUETOOTHMANAGERPROXY_H__
+#define __BLUETOOTHMANAGERPROXY_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.bluez.Manager */
+
+#define TYPE_ORG_BLUEZ_MANAGER (org_bluez_manager_get_type ())
+#define ORG_BLUEZ_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_BLUEZ_MANAGER, OrgBluezManager))
+#define IS_ORG_BLUEZ_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_BLUEZ_MANAGER))
+#define ORG_BLUEZ_MANAGER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_BLUEZ_MANAGER, OrgBluezManagerIface))
+
+struct _OrgBluezManager;
+typedef struct _OrgBluezManager OrgBluezManager;
+typedef struct _OrgBluezManagerIface OrgBluezManagerIface;
+
+struct _OrgBluezManagerIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_default_adapter) (
+    OrgBluezManager *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_find_adapter) (
+    OrgBluezManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0);
+
+  gboolean (*handle_get_properties) (
+    OrgBluezManager *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_list_adapters) (
+    OrgBluezManager *object,
+    GDBusMethodInvocation *invocation);
+
+  void (*adapter_added) (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0);
+
+  void (*adapter_removed) (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0);
+
+  void (*default_adapter_changed) (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0);
+
+  void (*property_changed) (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+};
+
+GType org_bluez_manager_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *org_bluez_manager_interface_info (void);
+guint org_bluez_manager_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void org_bluez_manager_complete_get_properties (
+    OrgBluezManager *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg0);
+
+void org_bluez_manager_complete_default_adapter (
+    OrgBluezManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *unnamed_arg0);
+
+void org_bluez_manager_complete_find_adapter (
+    OrgBluezManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *unnamed_arg1);
+
+void org_bluez_manager_complete_list_adapters (
+    OrgBluezManager *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *const *unnamed_arg0);
+
+
+
+/* D-Bus signal emissions functions: */
+void org_bluez_manager_emit_property_changed (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+void org_bluez_manager_emit_adapter_added (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0);
+
+void org_bluez_manager_emit_adapter_removed (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0);
+
+void org_bluez_manager_emit_default_adapter_changed (
+    OrgBluezManager *object,
+    const gchar *arg_unnamed_arg0);
+
+
+
+/* D-Bus method calls: */
+void org_bluez_manager_call_get_properties (
+    OrgBluezManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_manager_call_get_properties_finish (
+    OrgBluezManager *proxy,
+    GVariant **out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_manager_call_get_properties_sync (
+    OrgBluezManager *proxy,
+    GVariant **out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_manager_call_default_adapter (
+    OrgBluezManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_manager_call_default_adapter_finish (
+    OrgBluezManager *proxy,
+    gchar **out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_manager_call_default_adapter_sync (
+    OrgBluezManager *proxy,
+    gchar **out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_manager_call_find_adapter (
+    OrgBluezManager *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_manager_call_find_adapter_finish (
+    OrgBluezManager *proxy,
+    gchar **out_unnamed_arg1,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_manager_call_find_adapter_sync (
+    OrgBluezManager *proxy,
+    const gchar *arg_unnamed_arg0,
+    gchar **out_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_manager_call_list_adapters (
+    OrgBluezManager *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_manager_call_list_adapters_finish (
+    OrgBluezManager *proxy,
+    gchar ***out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_manager_call_list_adapters_sync (
+    OrgBluezManager *proxy,
+    gchar ***out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define TYPE_ORG_BLUEZ_MANAGER_PROXY (org_bluez_manager_proxy_get_type ())
+#define ORG_BLUEZ_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_BLUEZ_MANAGER_PROXY, OrgBluezManagerProxy))
+#define ORG_BLUEZ_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_BLUEZ_MANAGER_PROXY, OrgBluezManagerProxyClass))
+#define ORG_BLUEZ_MANAGER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_BLUEZ_MANAGER_PROXY, OrgBluezManagerProxyClass))
+#define IS_ORG_BLUEZ_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_BLUEZ_MANAGER_PROXY))
+#define IS_ORG_BLUEZ_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_BLUEZ_MANAGER_PROXY))
+
+typedef struct _OrgBluezManagerProxy OrgBluezManagerProxy;
+typedef struct _OrgBluezManagerProxyClass OrgBluezManagerProxyClass;
+typedef struct _OrgBluezManagerProxyPrivate OrgBluezManagerProxyPrivate;
+
+struct _OrgBluezManagerProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OrgBluezManagerProxyPrivate *priv;
+};
+
+struct _OrgBluezManagerProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType org_bluez_manager_proxy_get_type (void) G_GNUC_CONST;
+
+void org_bluez_manager_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OrgBluezManager *org_bluez_manager_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OrgBluezManager *org_bluez_manager_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void org_bluez_manager_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OrgBluezManager *org_bluez_manager_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OrgBluezManager *org_bluez_manager_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define TYPE_ORG_BLUEZ_MANAGER_SKELETON (org_bluez_manager_skeleton_get_type ())
+#define ORG_BLUEZ_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_BLUEZ_MANAGER_SKELETON, OrgBluezManagerSkeleton))
+#define ORG_BLUEZ_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_BLUEZ_MANAGER_SKELETON, OrgBluezManagerSkeletonClass))
+#define ORG_BLUEZ_MANAGER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_BLUEZ_MANAGER_SKELETON, OrgBluezManagerSkeletonClass))
+#define IS_ORG_BLUEZ_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_BLUEZ_MANAGER_SKELETON))
+#define IS_ORG_BLUEZ_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_BLUEZ_MANAGER_SKELETON))
+
+typedef struct _OrgBluezManagerSkeleton OrgBluezManagerSkeleton;
+typedef struct _OrgBluezManagerSkeletonClass OrgBluezManagerSkeletonClass;
+typedef struct _OrgBluezManagerSkeletonPrivate OrgBluezManagerSkeletonPrivate;
+
+struct _OrgBluezManagerSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OrgBluezManagerSkeletonPrivate *priv;
+};
+
+struct _OrgBluezManagerSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType org_bluez_manager_skeleton_get_type (void) G_GNUC_CONST;
+
+OrgBluezManager *org_bluez_manager_skeleton_new (void);
+
+
+G_END_DECLS
+
+#endif /* __BLUETOOTHMANAGERPROXY_H__ */
diff --git a/plugins/obd2plugin/bluetoothserialproxy.c b/plugins/obd2plugin/bluetoothserialproxy.c
new file mode 100644 (file)
index 0000000..f4d6128
--- /dev/null
@@ -0,0 +1,1397 @@
+/*
+ * Generated by gdbus-codegen 2.32.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include "bluetoothserialproxy.h"
+
+#ifdef G_OS_UNIX
+#  include <gio/gunixfdlist.h>
+#endif
+
+typedef struct
+{
+  GDBusArgInfo parent_struct;
+  gboolean use_gvariant;
+} _ExtendedGDBusArgInfo;
+
+typedef struct
+{
+  GDBusMethodInfo parent_struct;
+  const gchar *signal_name;
+  gboolean pass_fdlist;
+} _ExtendedGDBusMethodInfo;
+
+typedef struct
+{
+  GDBusSignalInfo parent_struct;
+  const gchar *signal_name;
+} _ExtendedGDBusSignalInfo;
+
+typedef struct
+{
+  GDBusPropertyInfo parent_struct;
+  const gchar *hyphen_name;
+  gboolean use_gvariant;
+} _ExtendedGDBusPropertyInfo;
+
+typedef struct
+{
+  GDBusInterfaceInfo parent_struct;
+  const gchar *hyphen_name;
+} _ExtendedGDBusInterfaceInfo;
+
+typedef struct
+{
+  const _ExtendedGDBusPropertyInfo *info;
+  guint prop_id;
+  GValue orig_value; /* the value before the change */
+} ChangedProperty;
+
+static void
+_changed_property_free (ChangedProperty *data)
+{
+  g_value_unset (&data->orig_value);
+  g_free (data);
+}
+
+static gboolean
+_g_strv_equal0 (gchar **a, gchar **b)
+{
+  gboolean ret = FALSE;
+  guint n;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  if (g_strv_length (a) != g_strv_length (b))
+    goto out;
+  for (n = 0; a[n] != NULL; n++)
+    if (g_strcmp0 (a[n], b[n]) != 0)
+      goto out;
+  ret = TRUE;
+out:
+  return ret;
+}
+
+static gboolean
+_g_variant_equal0 (GVariant *a, GVariant *b)
+{
+  gboolean ret = FALSE;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  ret = g_variant_equal (a, b);
+out:
+  return ret;
+}
+
+G_GNUC_UNUSED static gboolean
+_g_value_equal (const GValue *a, const GValue *b)
+{
+  gboolean ret = FALSE;
+  g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
+  switch (G_VALUE_TYPE (a))
+    {
+      case G_TYPE_BOOLEAN:
+        ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
+        break;
+      case G_TYPE_UCHAR:
+        ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
+        break;
+      case G_TYPE_INT:
+        ret = (g_value_get_int (a) == g_value_get_int (b));
+        break;
+      case G_TYPE_UINT:
+        ret = (g_value_get_uint (a) == g_value_get_uint (b));
+        break;
+      case G_TYPE_INT64:
+        ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
+        break;
+      case G_TYPE_UINT64:
+        ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
+        break;
+      case G_TYPE_DOUBLE:
+        ret = (g_value_get_double (a) == g_value_get_double (b));
+        break;
+      case G_TYPE_STRING:
+        ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
+        break;
+      case G_TYPE_VARIANT:
+        ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
+        break;
+      default:
+        if (G_VALUE_TYPE (a) == G_TYPE_STRV)
+          ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
+        else
+          g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
+        break;
+    }
+  return ret;
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.bluez.Serial
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OrgBluezSerial
+ * @title: OrgBluezSerial
+ * @short_description: Generated C code for the org.bluez.Serial D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-bluez-Serial.top_of_page">org.bluez.Serial</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.bluez.Serial ---- */
+
+static const _ExtendedGDBusArgInfo _org_bluez_serial_method_info_connect_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_serial_method_info_connect_IN_ARG_pointers[] =
+{
+  &_org_bluez_serial_method_info_connect_IN_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_serial_method_info_connect_OUT_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_serial_method_info_connect_OUT_ARG_pointers[] =
+{
+  &_org_bluez_serial_method_info_connect_OUT_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_serial_method_info_connect =
+{
+  {
+    -1,
+    "Connect",
+    (GDBusArgInfo **) &_org_bluez_serial_method_info_connect_IN_ARG_pointers,
+    (GDBusArgInfo **) &_org_bluez_serial_method_info_connect_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-connect",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_serial_method_info_connect_fd_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_serial_method_info_connect_fd_IN_ARG_pointers[] =
+{
+  &_org_bluez_serial_method_info_connect_fd_IN_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_serial_method_info_connect_fd_OUT_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "h",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_serial_method_info_connect_fd_OUT_ARG_pointers[] =
+{
+  &_org_bluez_serial_method_info_connect_fd_OUT_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_serial_method_info_connect_fd =
+{
+  {
+    -1,
+    "ConnectFD",
+    (GDBusArgInfo **) &_org_bluez_serial_method_info_connect_fd_IN_ARG_pointers,
+    (GDBusArgInfo **) &_org_bluez_serial_method_info_connect_fd_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-connect-fd",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_bluez_serial_method_info_disconnect_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_bluez_serial_method_info_disconnect_IN_ARG_pointers[] =
+{
+  &_org_bluez_serial_method_info_disconnect_IN_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_bluez_serial_method_info_disconnect =
+{
+  {
+    -1,
+    "Disconnect",
+    (GDBusArgInfo **) &_org_bluez_serial_method_info_disconnect_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-disconnect",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _org_bluez_serial_method_info_pointers[] =
+{
+  &_org_bluez_serial_method_info_connect,
+  &_org_bluez_serial_method_info_connect_fd,
+  &_org_bluez_serial_method_info_disconnect,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _org_bluez_serial_interface_info =
+{
+  {
+    -1,
+    "org.bluez.Serial",
+    (GDBusMethodInfo **) &_org_bluez_serial_method_info_pointers,
+    NULL,
+    NULL,
+    NULL
+  },
+  "org-bluez-serial",
+};
+
+
+/**
+ * org_bluez_serial_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-bluez-Serial.top_of_page">org.bluez.Serial</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+org_bluez_serial_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_org_bluez_serial_interface_info;
+}
+
+/**
+ * org_bluez_serial_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OrgBluezSerial interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+org_bluez_serial_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * OrgBluezSerial:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Serial.top_of_page">org.bluez.Serial</link>.
+ */
+
+/**
+ * OrgBluezSerialIface:
+ * @parent_iface: The parent interface.
+ * @handle_connect: Handler for the #OrgBluezSerial::handle-connect signal.
+ * @handle_connect_fd: Handler for the #OrgBluezSerial::handle-connect-fd signal.
+ * @handle_disconnect: Handler for the #OrgBluezSerial::handle-disconnect signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Serial.top_of_page">org.bluez.Serial</link>.
+ */
+
+static void
+org_bluez_serial_default_init (OrgBluezSerialIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * OrgBluezSerial::handle-connect:
+   * @object: A #OrgBluezSerial.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_unnamed_arg0: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Serial.Connect">Connect()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_serial_complete_connect() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-connect",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezSerialIface, handle_connect),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /**
+   * OrgBluezSerial::handle-connect-fd:
+   * @object: A #OrgBluezSerial.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_unnamed_arg0: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Serial.ConnectFD">ConnectFD()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_serial_complete_connect_fd() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-connect-fd",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezSerialIface, handle_connect_fd),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /**
+   * OrgBluezSerial::handle-disconnect:
+   * @object: A #OrgBluezSerial.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_unnamed_arg0: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-bluez-Serial.Disconnect">Disconnect()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_bluez_serial_complete_disconnect() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-disconnect",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (OrgBluezSerialIface, handle_disconnect),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+}
+
+typedef OrgBluezSerialIface OrgBluezSerialInterface;
+G_DEFINE_INTERFACE (OrgBluezSerial, org_bluez_serial, G_TYPE_OBJECT);
+
+/**
+ * org_bluez_serial_call_connect:
+ * @proxy: A #OrgBluezSerialProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Serial.Connect">Connect()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_serial_call_connect_finish() to get the result of the operation.
+ *
+ * See org_bluez_serial_call_connect_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_serial_call_connect (
+    OrgBluezSerial *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Connect",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_serial_call_connect_finish:
+ * @proxy: A #OrgBluezSerialProxy.
+ * @out_unnamed_arg1: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_serial_call_connect().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_serial_call_connect().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_serial_call_connect_finish (
+    OrgBluezSerial *proxy,
+    gchar **out_unnamed_arg1,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(s)",
+                 out_unnamed_arg1);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_serial_call_connect_sync:
+ * @proxy: A #OrgBluezSerialProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @out_unnamed_arg1: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Serial.Connect">Connect()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_serial_call_connect() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_serial_call_connect_sync (
+    OrgBluezSerial *proxy,
+    const gchar *arg_unnamed_arg0,
+    gchar **out_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Connect",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(s)",
+                 out_unnamed_arg1);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_serial_call_connect_fd:
+ * @proxy: A #OrgBluezSerialProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Serial.ConnectFD">ConnectFD()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_serial_call_connect_fd_finish() to get the result of the operation.
+ *
+ * See org_bluez_serial_call_connect_fd_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_serial_call_connect_fd (
+    OrgBluezSerial *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "ConnectFD",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_serial_call_connect_fd_finish:
+ * @proxy: A #OrgBluezSerialProxy.
+ * @out_unnamed_arg1: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_serial_call_connect_fd().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_serial_call_connect_fd().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_serial_call_connect_fd_finish (
+    OrgBluezSerial *proxy,
+    GVariant **out_unnamed_arg1,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@h)",
+                 out_unnamed_arg1);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_serial_call_connect_fd_sync:
+ * @proxy: A #OrgBluezSerialProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @out_unnamed_arg1: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Serial.ConnectFD">ConnectFD()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_serial_call_connect_fd() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_serial_call_connect_fd_sync (
+    OrgBluezSerial *proxy,
+    const gchar *arg_unnamed_arg0,
+    GVariant **out_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "ConnectFD",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@h)",
+                 out_unnamed_arg1);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_serial_call_disconnect:
+ * @proxy: A #OrgBluezSerialProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-bluez-Serial.Disconnect">Disconnect()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_serial_call_disconnect_finish() to get the result of the operation.
+ *
+ * See org_bluez_serial_call_disconnect_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_bluez_serial_call_disconnect (
+    OrgBluezSerial *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Disconnect",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_bluez_serial_call_disconnect_finish:
+ * @proxy: A #OrgBluezSerialProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_serial_call_disconnect().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_bluez_serial_call_disconnect().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_serial_call_disconnect_finish (
+    OrgBluezSerial *proxy,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_serial_call_disconnect_sync:
+ * @proxy: A #OrgBluezSerialProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-bluez-Serial.Disconnect">Disconnect()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_serial_call_disconnect() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_bluez_serial_call_disconnect_sync (
+    OrgBluezSerial *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Disconnect",
+    g_variant_new ("(s)",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "()");
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * org_bluez_serial_complete_connect:
+ * @object: A #OrgBluezSerial.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @unnamed_arg1: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Serial.Connect">Connect()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_serial_complete_connect (
+    OrgBluezSerial *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *unnamed_arg1)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(s)",
+                   unnamed_arg1));
+}
+
+/**
+ * org_bluez_serial_complete_connect_fd:
+ * @object: A #OrgBluezSerial.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @unnamed_arg1: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Serial.ConnectFD">ConnectFD()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_serial_complete_connect_fd (
+    OrgBluezSerial *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg1)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@h)",
+                   unnamed_arg1));
+}
+
+/**
+ * org_bluez_serial_complete_disconnect:
+ * @object: A #OrgBluezSerial.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-bluez-Serial.Disconnect">Disconnect()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_bluez_serial_complete_disconnect (
+    OrgBluezSerial *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgBluezSerialProxy:
+ *
+ * The #OrgBluezSerialProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgBluezSerialProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgBluezSerialProxy.
+ */
+
+struct _OrgBluezSerialProxyPrivate
+{
+  GData *qdata;
+};
+
+static void org_bluez_serial_proxy_iface_init (OrgBluezSerialIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (OrgBluezSerialProxy, org_bluez_serial_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (TYPE_ORG_BLUEZ_SERIAL, org_bluez_serial_proxy_iface_init));
+
+static void
+org_bluez_serial_proxy_finalize (GObject *object)
+{
+  OrgBluezSerialProxy *proxy = ORG_BLUEZ_SERIAL_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (org_bluez_serial_proxy_parent_class)->finalize (object);
+}
+
+static void
+org_bluez_serial_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_bluez_serial_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_bluez_serial_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_bluez_serial_interface_info, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], TYPE_ORG_BLUEZ_SERIAL);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_BLUEZ_SERIAL);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+org_bluez_serial_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  OrgBluezSerialProxy *proxy = ORG_BLUEZ_SERIAL_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_bluez_serial_interface_info, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_bluez_serial_interface_info, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+org_bluez_serial_proxy_init (OrgBluezSerialProxy *proxy)
+{
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_BLUEZ_SERIAL_PROXY, OrgBluezSerialProxyPrivate);
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_bluez_serial_interface_info ());
+}
+
+static void
+org_bluez_serial_proxy_class_init (OrgBluezSerialProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  g_type_class_add_private (klass, sizeof (OrgBluezSerialProxyPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = org_bluez_serial_proxy_finalize;
+  gobject_class->get_property = org_bluez_serial_proxy_get_property;
+  gobject_class->set_property = org_bluez_serial_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = org_bluez_serial_proxy_g_signal;
+  proxy_class->g_properties_changed = org_bluez_serial_proxy_g_properties_changed;
+
+}
+
+static void
+org_bluez_serial_proxy_iface_init (OrgBluezSerialIface *iface)
+{
+}
+
+/**
+ * org_bluez_serial_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Serial.top_of_page">org.bluez.Serial</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_serial_proxy_new_finish() to get the result of the operation.
+ *
+ * See org_bluez_serial_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_bluez_serial_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (TYPE_ORG_BLUEZ_SERIAL_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.bluez.Serial", NULL);
+}
+
+/**
+ * org_bluez_serial_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_serial_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_bluez_serial_proxy_new().
+ *
+ * Returns: (transfer full) (type OrgBluezSerialProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgBluezSerial *
+org_bluez_serial_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return ORG_BLUEZ_SERIAL (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_bluez_serial_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Serial.top_of_page">org.bluez.Serial</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_serial_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgBluezSerialProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgBluezSerial *
+org_bluez_serial_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (TYPE_ORG_BLUEZ_SERIAL_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.bluez.Serial", NULL);
+  if (ret != NULL)
+    return ORG_BLUEZ_SERIAL (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * org_bluez_serial_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like org_bluez_serial_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_bluez_serial_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See org_bluez_serial_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_bluez_serial_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (TYPE_ORG_BLUEZ_SERIAL_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.bluez.Serial", NULL);
+}
+
+/**
+ * org_bluez_serial_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_bluez_serial_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_bluez_serial_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OrgBluezSerialProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgBluezSerial *
+org_bluez_serial_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return ORG_BLUEZ_SERIAL (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_bluez_serial_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like org_bluez_serial_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_bluez_serial_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgBluezSerialProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgBluezSerial *
+org_bluez_serial_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (TYPE_ORG_BLUEZ_SERIAL_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.bluez.Serial", NULL);
+  if (ret != NULL)
+    return ORG_BLUEZ_SERIAL (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgBluezSerialSkeleton:
+ *
+ * The #OrgBluezSerialSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgBluezSerialSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgBluezSerialSkeleton.
+ */
+
+struct _OrgBluezSerialSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_org_bluez_serial_skeleton_handle_method_call (
+  GDBusConnection *connection,
+  const gchar *sender,
+  const gchar *object_path,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  OrgBluezSerialSkeleton *skeleton = ORG_BLUEZ_SERIAL_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  guint num_params;
+  guint num_extra;
+  guint n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], TYPE_ORG_BLUEZ_SERIAL);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_BLUEZ_SERIAL);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_org_bluez_serial_skeleton_handle_get_property (
+  GDBusConnection *connection,
+  const gchar *sender,
+  const gchar *object_path,
+  const gchar *interface_name,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  OrgBluezSerialSkeleton *skeleton = ORG_BLUEZ_SERIAL_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_bluez_serial_interface_info, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_org_bluez_serial_skeleton_handle_set_property (
+  GDBusConnection *connection,
+  const gchar *sender,
+  const gchar *object_path,
+  const gchar *interface_name,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  OrgBluezSerialSkeleton *skeleton = ORG_BLUEZ_SERIAL_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_bluez_serial_interface_info, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _org_bluez_serial_skeleton_vtable =
+{
+  _org_bluez_serial_skeleton_handle_method_call,
+  _org_bluez_serial_skeleton_handle_get_property,
+  _org_bluez_serial_skeleton_handle_set_property
+};
+
+static GDBusInterfaceInfo *
+org_bluez_serial_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton)
+{
+  return org_bluez_serial_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+org_bluez_serial_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton)
+{
+  return (GDBusInterfaceVTable *) &_org_bluez_serial_skeleton_vtable;
+}
+
+static GVariant *
+org_bluez_serial_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  OrgBluezSerialSkeleton *skeleton = ORG_BLUEZ_SERIAL_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_org_bluez_serial_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _org_bluez_serial_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _org_bluez_serial_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _org_bluez_serial_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.bluez.Serial", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+org_bluez_serial_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void org_bluez_serial_skeleton_iface_init (OrgBluezSerialIface *iface);
+G_DEFINE_TYPE_WITH_CODE (OrgBluezSerialSkeleton, org_bluez_serial_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (TYPE_ORG_BLUEZ_SERIAL, org_bluez_serial_skeleton_iface_init));
+
+static void
+org_bluez_serial_skeleton_finalize (GObject *object)
+{
+  OrgBluezSerialSkeleton *skeleton = ORG_BLUEZ_SERIAL_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (org_bluez_serial_skeleton_parent_class)->finalize (object);
+}
+
+static void
+org_bluez_serial_skeleton_init (OrgBluezSerialSkeleton *skeleton)
+{
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_BLUEZ_SERIAL_SKELETON, OrgBluezSerialSkeletonPrivate);
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+org_bluez_serial_skeleton_class_init (OrgBluezSerialSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  g_type_class_add_private (klass, sizeof (OrgBluezSerialSkeletonPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = org_bluez_serial_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = org_bluez_serial_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = org_bluez_serial_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = org_bluez_serial_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = org_bluez_serial_skeleton_dbus_interface_get_vtable;
+}
+
+static void
+org_bluez_serial_skeleton_iface_init (OrgBluezSerialIface *iface)
+{
+}
+
+/**
+ * org_bluez_serial_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-bluez-Serial.top_of_page">org.bluez.Serial</link>.
+ *
+ * Returns: (transfer full) (type OrgBluezSerialSkeleton): The skeleton object.
+ */
+OrgBluezSerial *
+org_bluez_serial_skeleton_new (void)
+{
+  return ORG_BLUEZ_SERIAL (g_object_new (TYPE_ORG_BLUEZ_SERIAL_SKELETON, NULL));
+}
+
diff --git a/plugins/obd2plugin/bluetoothserialproxy.h b/plugins/obd2plugin/bluetoothserialproxy.h
new file mode 100644 (file)
index 0000000..cf3ef53
--- /dev/null
@@ -0,0 +1,230 @@
+/*
+ * Generated by gdbus-codegen 2.32.1. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __BLUETOOTHSERIALPROXY_H__
+#define __BLUETOOTHSERIALPROXY_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.bluez.Serial */
+
+#define TYPE_ORG_BLUEZ_SERIAL (org_bluez_serial_get_type ())
+#define ORG_BLUEZ_SERIAL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_BLUEZ_SERIAL, OrgBluezSerial))
+#define IS_ORG_BLUEZ_SERIAL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_BLUEZ_SERIAL))
+#define ORG_BLUEZ_SERIAL_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_BLUEZ_SERIAL, OrgBluezSerialIface))
+
+struct _OrgBluezSerial;
+typedef struct _OrgBluezSerial OrgBluezSerial;
+typedef struct _OrgBluezSerialIface OrgBluezSerialIface;
+
+struct _OrgBluezSerialIface
+{
+  GTypeInterface parent_iface;
+
+  gboolean (*handle_connect) (
+    OrgBluezSerial *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0);
+
+  gboolean (*handle_connect_fd) (
+    OrgBluezSerial *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0);
+
+  gboolean (*handle_disconnect) (
+    OrgBluezSerial *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0);
+
+};
+
+GType org_bluez_serial_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *org_bluez_serial_interface_info (void);
+guint org_bluez_serial_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void org_bluez_serial_complete_connect (
+    OrgBluezSerial *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *unnamed_arg1);
+
+void org_bluez_serial_complete_connect_fd (
+    OrgBluezSerial *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg1);
+
+void org_bluez_serial_complete_disconnect (
+    OrgBluezSerial *object,
+    GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus method calls: */
+void org_bluez_serial_call_connect (
+    OrgBluezSerial *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_serial_call_connect_finish (
+    OrgBluezSerial *proxy,
+    gchar **out_unnamed_arg1,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_serial_call_connect_sync (
+    OrgBluezSerial *proxy,
+    const gchar *arg_unnamed_arg0,
+    gchar **out_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_serial_call_connect_fd (
+    OrgBluezSerial *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_serial_call_connect_fd_finish (
+    OrgBluezSerial *proxy,
+    GVariant **out_unnamed_arg1,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_serial_call_connect_fd_sync (
+    OrgBluezSerial *proxy,
+    const gchar *arg_unnamed_arg0,
+    GVariant **out_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_bluez_serial_call_disconnect (
+    OrgBluezSerial *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_bluez_serial_call_disconnect_finish (
+    OrgBluezSerial *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_bluez_serial_call_disconnect_sync (
+    OrgBluezSerial *proxy,
+    const gchar *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define TYPE_ORG_BLUEZ_SERIAL_PROXY (org_bluez_serial_proxy_get_type ())
+#define ORG_BLUEZ_SERIAL_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_BLUEZ_SERIAL_PROXY, OrgBluezSerialProxy))
+#define ORG_BLUEZ_SERIAL_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_BLUEZ_SERIAL_PROXY, OrgBluezSerialProxyClass))
+#define ORG_BLUEZ_SERIAL_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_BLUEZ_SERIAL_PROXY, OrgBluezSerialProxyClass))
+#define IS_ORG_BLUEZ_SERIAL_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_BLUEZ_SERIAL_PROXY))
+#define IS_ORG_BLUEZ_SERIAL_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_BLUEZ_SERIAL_PROXY))
+
+typedef struct _OrgBluezSerialProxy OrgBluezSerialProxy;
+typedef struct _OrgBluezSerialProxyClass OrgBluezSerialProxyClass;
+typedef struct _OrgBluezSerialProxyPrivate OrgBluezSerialProxyPrivate;
+
+struct _OrgBluezSerialProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  OrgBluezSerialProxyPrivate *priv;
+};
+
+struct _OrgBluezSerialProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType org_bluez_serial_proxy_get_type (void) G_GNUC_CONST;
+
+void org_bluez_serial_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OrgBluezSerial *org_bluez_serial_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OrgBluezSerial *org_bluez_serial_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void org_bluez_serial_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+OrgBluezSerial *org_bluez_serial_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+OrgBluezSerial *org_bluez_serial_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define TYPE_ORG_BLUEZ_SERIAL_SKELETON (org_bluez_serial_skeleton_get_type ())
+#define ORG_BLUEZ_SERIAL_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_BLUEZ_SERIAL_SKELETON, OrgBluezSerialSkeleton))
+#define ORG_BLUEZ_SERIAL_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_BLUEZ_SERIAL_SKELETON, OrgBluezSerialSkeletonClass))
+#define ORG_BLUEZ_SERIAL_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_BLUEZ_SERIAL_SKELETON, OrgBluezSerialSkeletonClass))
+#define IS_ORG_BLUEZ_SERIAL_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_BLUEZ_SERIAL_SKELETON))
+#define IS_ORG_BLUEZ_SERIAL_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_BLUEZ_SERIAL_SKELETON))
+
+typedef struct _OrgBluezSerialSkeleton OrgBluezSerialSkeleton;
+typedef struct _OrgBluezSerialSkeletonClass OrgBluezSerialSkeletonClass;
+typedef struct _OrgBluezSerialSkeletonPrivate OrgBluezSerialSkeletonPrivate;
+
+struct _OrgBluezSerialSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  OrgBluezSerialSkeletonPrivate *priv;
+};
+
+struct _OrgBluezSerialSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType org_bluez_serial_skeleton_get_type (void) G_GNUC_CONST;
+
+OrgBluezSerial *org_bluez_serial_skeleton_new (void);
+
+
+G_END_DECLS
+
+#endif /* __BLUETOOTHSERIALPROXY_H__ */
index 40cfcb3..dd4778b 100644 (file)
@@ -26,6 +26,8 @@
 #include <json-glib/json-glib.h>
 #include <listplusplus.h>
 #include "debugout.h"
+#include "bluetooth.hpp"
+
 #define __SMALLFILE__ std::string(__FILE__).substr(std::string(__FILE__).rfind("/")+1)
 AbstractRoutingEngine *m_re;
 
@@ -72,7 +74,7 @@ void threadLoop(gpointer data)
                if (query != nullptr)
                {
                        //printf("Got request!\n");
-                       DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Got single shot request!\n";
+                       DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Got single shot request!"<<endl;
                        ObdRequest *req = (ObdRequest*)query;
                        repeatReqList.push_back(req->req);
                        delete req;
@@ -80,8 +82,9 @@ void threadLoop(gpointer data)
                query = g_async_queue_try_pop(privSubscriptionAddQueue);
                if (query != nullptr)
                {
-                       DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Got subscription request\n";
+
                        ObdRequest *req = (ObdRequest*)query;
+                       DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Got subscription request for "<<req->req<<endl;
                        reqList.push_back(req->req);
                        delete req;
                }
@@ -93,7 +96,7 @@ void threadLoop(gpointer data)
                        ObdRequest *req = (ObdRequest*)query;
                        //commandMap[req->req] = req->arg;
                        //printf("Command: %s\n",req->req.c_str());
-                       DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Command:" << req->req << "\n";
+                       DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Command:" << req->req << endl;
                        if (req->req == "connect")
                        {
                                //printf("First: %s\nSecond: %s\n",req->arg.substr(0,req->arg.find(':')).c_str(),req->arg.substr(req->arg.find(':')+1).c_str());
@@ -329,11 +332,10 @@ void OBD2Source::updateProperty(VehicleProperty::Property property,AbstractPrope
 {
        //m_re->updateProperty(property,&value);
        m_re->updateProperty(property,value); 
-       if (propertyReplyMap.find(property) != propertyReplyMap.cend())
+       if (propertyReplyMap.find(property) != propertyReplyMap.end())
        {
                propertyReplyMap[property]->value = value;
                propertyReplyMap[property]->completed(propertyReplyMap[property]);
-               delete propertyReplyMap[property];
                propertyReplyMap.erase(property);
        }
 }
@@ -382,8 +384,8 @@ void OBD2Source::setConfiguration(map<string, string> config)
        for (map<string,string>::iterator i=configuration.begin();i!=configuration.end();i++)
        {
                //printf("Incoming setting: %s:%s\n",(*i).first.c_str(),(*i).second.c_str());
-               DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Incoming setting:" << (*i).first << ":" << (*i).second << "\n";
-               if ((*i).first == "port")
+               DebugOut(5) << __SMALLFILE__ <<":"<< __LINE__ << "Incoming setting:" << (*i).first << ":" << (*i).second << "\n";
+               if ((*i).first == "device")
                {
                        port = (*i).second;
                }
@@ -392,6 +394,22 @@ void OBD2Source::setConfiguration(map<string, string> config)
                        baud = (*i).second;
                }
        }
+
+       if(port.find(":") != string::npos)
+       {
+               ///TODO: bluetooth!!
+               DebugOut()<<"bluetooth device?"<<endl;
+               ObdBluetoothDevice bt;
+
+               std::string tempPort = bt.getDeviceForAddress(port);
+               if(tempPort != "")
+               {
+                       DebugOut(3)<<"Using bluetooth device \""<<port<<"\" bound to: "<<tempPort<<endl;
+                       port = tempPort;
+               }
+               else throw std::runtime_error("Device Error");
+       }
+
        ObdRequest *requ = new ObdRequest();
        requ->req = "connect";
        requ->arg = port + ":" + baud;
@@ -423,6 +441,8 @@ OBD2Source::OBD2Source(AbstractRoutingEngine *re, map<string, string> config) :
        responseQueue = g_async_queue_new();
        singleShotQueue = g_async_queue_new();
        g_thread_new("mythread",(GThreadFunc)&threadLoop,this);
+
+       setConfiguration(config);
 }
 
 PropertyList OBD2Source::supported()