Migrating to GDBus (and remove dependencies to dbus-glib)
authorFrederic PAUT <frederic.paut@linux.intel.com>
Thu, 16 Feb 2012 15:49:03 +0000 (16:49 +0100)
committerFrederic PAUT <frederic.paut@linux.intel.com>
Thu, 16 Feb 2012 15:49:03 +0000 (16:49 +0100)
25 files changed:
configure.ac
lib/Makefile.am
lib/neard_adapter_proxy.c [new file with mode: 0644]
lib/neard_adapter_proxy.h [new file with mode: 0644]
lib/neard_manager_proxy.c [new file with mode: 0644]
lib/neard_manager_proxy.h [new file with mode: 0644]
lib/neard_record_proxy.c [new file with mode: 0644]
lib/neard_record_proxy.h [new file with mode: 0644]
lib/neard_target_proxy.c [new file with mode: 0644]
lib/neard_target_proxy.h [new file with mode: 0644]
lib/neardal.c
lib/neardal.h
lib/neardal_adapter.c
lib/neardal_adapter.h
lib/neardal_manager.c
lib/neardal_manager.h
lib/neardal_prv.h
lib/neardal_record.c
lib/neardal_record.h
lib/neardal_target.c
lib/neardal_target.h
lib/neardal_tools.c
lib/neardal_tools.h
ncl/ncl_cmd.c
ncl/ncl_cmd.h

index f4fa433..d17c23f 100644 (file)
@@ -1,5 +1,6 @@
 AC_INIT([libneardal], [0.1.0])
 AM_INIT_AUTOMAKE([foreign -Wall -Werror])
+
 AC_PROG_LIBTOOL
 AC_CONFIG_HEADERS([config.h])
 
@@ -47,14 +48,16 @@ if (test "${traces}" = "yes"); then
 fi
 
 ## Check dependances
-PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.22, dummy=yes,
-                               AC_MSG_ERROR(GLib >= 2.22 is required))
+GLIB_REQUIRED=2.30.0
+PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED, dummy=yes,
+                               AC_MSG_ERROR(GLib >= $GLIB_REQUIRED is required))
 AC_SUBST(GLIB_CFLAGS)
 AC_SUBST(GLIB_LIBS)
 
-PKG_CHECK_MODULES(DBUS, dbus-glib-1, [have_dbus="yes"], [have_dbus="no"])
-AC_SUBST(DBUS_CFLAGS)
-AC_SUBST(DBUS_LIBS)
+PKG_CHECK_MODULES(GIO_UNIX, gio-unix-2.0 >= $GLIB_REQUIRED, dummy=yes,
+                               AC_MSG_ERROR(gio-unix >= $GLIB_REQUIRED is required))
+AC_SUBST(GIO_UNIX_CFLAGS)
+AC_SUBST(GIO_UNIX_LIBS)
 
 AC_CHECK_PROGS([DOXYGEN], [doxygen])
 if test -z "$DOXYGEN";
index f643e84..0d88eb8 100644 (file)
@@ -3,22 +3,34 @@ neardal_LT_REVISION = 1
 neardal_LT_AGE = 0
 
 #Rule to generate the binding headers
-neard-manager-proxy.h:  interface/org.neard.Manager.xml
-       dbus-binding-tool --mode=glib-client $<> $@
-
-neard-adapter-proxy.h:  interface/org.neard.Adapter.xml
-       dbus-binding-tool --mode=glib-client $<> $@
-
-neard-target-proxy.h:  interface/org.neard.Target.xml
-       dbus-binding-tool --mode=glib-client $<> $@
-
-neard-record-proxy.h:  interface/org.neard.Record.xml
-       dbus-binding-tool --mode=glib-client $<> $@
-
-BUILT_SOURCES =        neard-manager-proxy.h \
-               neard-adapter-proxy.h \
-               neard-target-proxy.h \
-               neard-record-proxy.h
+neard_manager_proxy.h:  interface/org.neard.Manager.xml
+       gdbus-codegen --generate-c-code neard_manager_proxy \
+                       --c-namespace orgNeardMgr \
+                       --interface-prefix org.neard.Manager \
+                       $<
+       
+neard_adapter_proxy.h:  interface/org.neard.Adapter.xml
+       gdbus-codegen --generate-c-code neard_adapter_proxy \
+                       --c-namespace orgNeardAdp \
+                       --interface-prefix org.neard.Adapter \
+                       $<
+
+neard_target_proxy.h:  interface/org.neard.Target.xml
+       gdbus-codegen --generate-c-code neard_target_proxy \
+                       --c-namespace orgNeardTgt \
+                       --interface-prefix org.neard.Target \
+                       $<
+
+neard_record_proxy.h:  interface/org.neard.Record.xml
+       gdbus-codegen --generate-c-code neard_record_proxy \
+                       --c-namespace orgNeardRcd \
+                       --interface-prefix org.neard.Record \
+                       $<
+
+BUILT_SOURCES =        neard_manager_proxy.h \
+               neard_adapter_proxy.h \
+               neard_target_proxy.h \
+               neard_record_proxy.h
 
 neardal_PRV_HDR = \
                neardal_adapter.h \
@@ -41,17 +53,21 @@ EXTRA_DIST = interface/org.neard.Manager.xml interface/org.neard.Adapter.xml int
 lib_LTLIBRARIES =              libneardal.la
 libneardal_la_SOURCES =        neardal.c \
                                neardal_adapter.c \
+                               neard_adapter_proxy.c \
                                neardal_errors.c \
                                neardal_manager.c \
+                               neard_manager_proxy.c \
                                neardal_record.c \
+                               neard_record_proxy.c \
                                neardal_target.c \
+                               neard_target_proxy.c \
                                neardal_tools.c \
                                neardal_traces.c
 
 libneardal_la_LDFLAGS = -version-info $(neardal_LT_CURRENT):$(neardal_LT_REVISION):$(neardal_LT_AGE)
-libneardal_la_CFLAGS = $(GLIB_CFLAGS) $(DBUS_CFLAGS)
+libneardal_la_CFLAGS = $(GLIB_CFLAGS) $(GIO_UNIX_CFLAGS)
 
-libneardal_la_LIBADD = $(GLIB_LIBS) $(DBUS_LIBS)
+libneardal_la_LIBADD = $(GLIB_LIBS) $(GIO_UNIX_LIBS)
 
 neardalheadersdir = $(includedir)/neardal
 
diff --git a/lib/neard_adapter_proxy.c b/lib/neard_adapter_proxy.c
new file mode 100644 (file)
index 0000000..62a1962
--- /dev/null
@@ -0,0 +1,1927 @@
+/*
+ * Generated by gdbus-codegen 2.30.0. 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 "neard_adapter_proxy.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.neard.Adapter
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:orgNeardAdp
+ * @title: orgNeardAdp
+ * @short_description: Generated C code for the org.neard.Adapter D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-neard-Adapter.top_of_page">org.neard.Adapter</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.neard.Adapter ---- */
+
+static const _ExtendedGDBusArgInfo _org_neard_adp__method_info_get_properties_OUT_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_adp__method_info_get_properties_OUT_ARG_pointers[] =
+{
+  &_org_neard_adp__method_info_get_properties_OUT_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_neard_adp__method_info_get_properties =
+{
+  {
+    -1,
+    "GetProperties",
+    NULL,
+    (GDBusArgInfo **) &_org_neard_adp__method_info_get_properties_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-properties",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_adp__method_info_set_property_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_adp__method_info_set_property_IN_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_adp__method_info_set_property_IN_ARG_pointers[] =
+{
+  &_org_neard_adp__method_info_set_property_IN_ARG_unnamed_arg0,
+  &_org_neard_adp__method_info_set_property_IN_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_neard_adp__method_info_set_property =
+{
+  {
+    -1,
+    "SetProperty",
+    (GDBusArgInfo **) &_org_neard_adp__method_info_set_property_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-set-property",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_neard_adp__method_info_start_poll =
+{
+  {
+    -1,
+    "StartPoll",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-start-poll",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_neard_adp__method_info_stop_poll =
+{
+  {
+    -1,
+    "StopPoll",
+    NULL,
+    NULL,
+    NULL
+  },
+  "handle-stop-poll",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_adp__method_info_publish_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_adp__method_info_publish_IN_ARG_pointers[] =
+{
+  &_org_neard_adp__method_info_publish_IN_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_neard_adp__method_info_publish =
+{
+  {
+    -1,
+    "Publish",
+    (GDBusArgInfo **) &_org_neard_adp__method_info_publish_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-publish",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _org_neard_adp__method_info_pointers[] =
+{
+  &_org_neard_adp__method_info_get_properties,
+  &_org_neard_adp__method_info_set_property,
+  &_org_neard_adp__method_info_start_poll,
+  &_org_neard_adp__method_info_stop_poll,
+  &_org_neard_adp__method_info_publish,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_adp__signal_info_property_changed_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_adp__signal_info_property_changed_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_adp__signal_info_property_changed_ARG_pointers[] =
+{
+  &_org_neard_adp__signal_info_property_changed_ARG_unnamed_arg0,
+  &_org_neard_adp__signal_info_property_changed_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_neard_adp__signal_info_property_changed =
+{
+  {
+    -1,
+    "PropertyChanged",
+    (GDBusArgInfo **) &_org_neard_adp__signal_info_property_changed_ARG_pointers,
+    NULL
+  },
+  "property-changed"
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_adp__signal_info_target_found_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_adp__signal_info_target_found_ARG_pointers[] =
+{
+  &_org_neard_adp__signal_info_target_found_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_neard_adp__signal_info_target_found =
+{
+  {
+    -1,
+    "TargetFound",
+    (GDBusArgInfo **) &_org_neard_adp__signal_info_target_found_ARG_pointers,
+    NULL
+  },
+  "target-found"
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_adp__signal_info_target_lost_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_adp__signal_info_target_lost_ARG_pointers[] =
+{
+  &_org_neard_adp__signal_info_target_lost_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_neard_adp__signal_info_target_lost =
+{
+  {
+    -1,
+    "TargetLost",
+    (GDBusArgInfo **) &_org_neard_adp__signal_info_target_lost_ARG_pointers,
+    NULL
+  },
+  "target-lost"
+};
+
+static const _ExtendedGDBusSignalInfo * const _org_neard_adp__signal_info_pointers[] =
+{
+  &_org_neard_adp__signal_info_property_changed,
+  &_org_neard_adp__signal_info_target_found,
+  &_org_neard_adp__signal_info_target_lost,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _org_neard_adp__interface_info =
+{
+  {
+    -1,
+    "org.neard.Adapter",
+    (GDBusMethodInfo **) &_org_neard_adp__method_info_pointers,
+    (GDBusSignalInfo **) &_org_neard_adp__signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "",
+};
+
+
+/**
+ * org_neard_adp__interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-neard-Adapter.top_of_page">org.neard.Adapter</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+org_neard_adp__interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_org_neard_adp__interface_info;
+}
+
+/**
+ * org_neard_adp__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 #orgNeardAdp interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+org_neard_adp__override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * orgNeardAdp:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-neard-Adapter.top_of_page">org.neard.Adapter</link>.
+ */
+
+/**
+ * orgNeardAdpIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_properties: Handler for the #orgNeardAdp::handle-get-properties signal.
+ * @handle_publish: Handler for the #orgNeardAdp::handle-publish signal.
+ * @handle_set_property: Handler for the #orgNeardAdp::handle-set-property signal.
+ * @handle_start_poll: Handler for the #orgNeardAdp::handle-start-poll signal.
+ * @handle_stop_poll: Handler for the #orgNeardAdp::handle-stop-poll signal.
+ * @property_changed: Handler for the #orgNeardAdp::property-changed signal.
+ * @target_found: Handler for the #orgNeardAdp::target-found signal.
+ * @target_lost: Handler for the #orgNeardAdp::target-lost signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-neard-Adapter.top_of_page">org.neard.Adapter</link>.
+ */
+
+static void
+org_neard_adp__default_init (orgNeardAdpIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * orgNeardAdp::handle-get-properties:
+   * @object: A #orgNeardAdp.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-neard-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_neard_adp__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 (orgNeardAdpIface, handle_get_properties),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * orgNeardAdp::handle-set-property:
+   * @object: A #orgNeardAdp.
+   * @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-neard-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_neard_adp__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 (orgNeardAdpIface, 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);
+
+  /**
+   * orgNeardAdp::handle-start-poll:
+   * @object: A #orgNeardAdp.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-neard-Adapter.StartPoll">StartPoll()</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_neard_adp__complete_start_poll() 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-poll",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (orgNeardAdpIface, handle_start_poll),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * orgNeardAdp::handle-stop-poll:
+   * @object: A #orgNeardAdp.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-neard-Adapter.StopPoll">StopPoll()</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_neard_adp__complete_stop_poll() 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-poll",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (orgNeardAdpIface, handle_stop_poll),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * orgNeardAdp::handle-publish:
+   * @object: A #orgNeardAdp.
+   * @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-neard-Adapter.Publish">Publish()</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_neard_adp__complete_publish() 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-publish",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (orgNeardAdpIface, handle_publish),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_VARIANT);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * orgNeardAdp::property-changed:
+   * @object: A #orgNeardAdp.
+   * @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-neard-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 (orgNeardAdpIface, property_changed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+  /**
+   * orgNeardAdp::target-found:
+   * @object: A #orgNeardAdp.
+   * @arg_unnamed_arg0: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-neard-Adapter.TargetFound">"TargetFound"</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 ("target-found",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (orgNeardAdpIface, target_found),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+  /**
+   * orgNeardAdp::target-lost:
+   * @object: A #orgNeardAdp.
+   * @arg_unnamed_arg0: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-neard-Adapter.TargetLost">"TargetLost"</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 ("target-lost",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (orgNeardAdpIface, target_lost),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+}
+
+typedef orgNeardAdpIface orgNeardAdpInterface;
+G_DEFINE_INTERFACE (orgNeardAdp, org_neard_adp_, G_TYPE_OBJECT);
+
+/**
+ * org_neard_adp__emit_property_changed:
+ * @object: A #orgNeardAdp.
+ * @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-neard-Adapter.PropertyChanged">"PropertyChanged"</link> D-Bus signal.
+ */
+void
+org_neard_adp__emit_property_changed (
+    orgNeardAdp *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_neard_adp__emit_target_found:
+ * @object: A #orgNeardAdp.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-neard-Adapter.TargetFound">"TargetFound"</link> D-Bus signal.
+ */
+void
+org_neard_adp__emit_target_found (
+    orgNeardAdp *object,
+    const gchar *arg_unnamed_arg0)
+{
+  g_signal_emit_by_name (object, "target-found", arg_unnamed_arg0);
+}
+
+/**
+ * org_neard_adp__emit_target_lost:
+ * @object: A #orgNeardAdp.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-neard-Adapter.TargetLost">"TargetLost"</link> D-Bus signal.
+ */
+void
+org_neard_adp__emit_target_lost (
+    orgNeardAdp *object,
+    const gchar *arg_unnamed_arg0)
+{
+  g_signal_emit_by_name (object, "target-lost", arg_unnamed_arg0);
+}
+
+/**
+ * org_neard_adp__call_get_properties:
+ * @proxy: A #orgNeardAdpProxy.
+ * @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-neard-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_neard_adp__call_get_properties_finish() to get the result of the operation.
+ *
+ * See org_neard_adp__call_get_properties_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_neard_adp__call_get_properties (
+    orgNeardAdp *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_neard_adp__call_get_properties_finish:
+ * @proxy: A #orgNeardAdpProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_adp__call_get_properties().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_neard_adp__call_get_properties().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_adp__call_get_properties_finish (
+    orgNeardAdp *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_neard_adp__call_get_properties_sync:
+ * @proxy: A #orgNeardAdpProxy.
+ * @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-neard-Adapter.GetProperties">GetProperties()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_adp__call_get_properties() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_adp__call_get_properties_sync (
+    orgNeardAdp *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_neard_adp__call_set_property:
+ * @proxy: A #orgNeardAdpProxy.
+ * @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-neard-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_neard_adp__call_set_property_finish() to get the result of the operation.
+ *
+ * See org_neard_adp__call_set_property_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_neard_adp__call_set_property (
+    orgNeardAdp *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_neard_adp__call_set_property_finish:
+ * @proxy: A #orgNeardAdpProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_adp__call_set_property().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_neard_adp__call_set_property().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_adp__call_set_property_finish (
+    orgNeardAdp *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_neard_adp__call_set_property_sync:
+ * @proxy: A #orgNeardAdpProxy.
+ * @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-neard-Adapter.SetProperty">SetProperty()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_adp__call_set_property() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_adp__call_set_property_sync (
+    orgNeardAdp *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_neard_adp__call_start_poll:
+ * @proxy: A #orgNeardAdpProxy.
+ * @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-neard-Adapter.StartPoll">StartPoll()</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_neard_adp__call_start_poll_finish() to get the result of the operation.
+ *
+ * See org_neard_adp__call_start_poll_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_neard_adp__call_start_poll (
+    orgNeardAdp *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "StartPoll",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_neard_adp__call_start_poll_finish:
+ * @proxy: A #orgNeardAdpProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_adp__call_start_poll().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_neard_adp__call_start_poll().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_adp__call_start_poll_finish (
+    orgNeardAdp *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_neard_adp__call_start_poll_sync:
+ * @proxy: A #orgNeardAdpProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-neard-Adapter.StartPoll">StartPoll()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_adp__call_start_poll() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_adp__call_start_poll_sync (
+    orgNeardAdp *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "StartPoll",
+    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_neard_adp__call_stop_poll:
+ * @proxy: A #orgNeardAdpProxy.
+ * @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-neard-Adapter.StopPoll">StopPoll()</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_neard_adp__call_stop_poll_finish() to get the result of the operation.
+ *
+ * See org_neard_adp__call_stop_poll_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_neard_adp__call_stop_poll (
+    orgNeardAdp *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "StopPoll",
+    g_variant_new ("()"),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_neard_adp__call_stop_poll_finish:
+ * @proxy: A #orgNeardAdpProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_adp__call_stop_poll().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_neard_adp__call_stop_poll().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_adp__call_stop_poll_finish (
+    orgNeardAdp *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_neard_adp__call_stop_poll_sync:
+ * @proxy: A #orgNeardAdpProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-neard-Adapter.StopPoll">StopPoll()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_adp__call_stop_poll() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_adp__call_stop_poll_sync (
+    orgNeardAdp *proxy,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "StopPoll",
+    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_neard_adp__call_publish:
+ * @proxy: A #orgNeardAdpProxy.
+ * @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-neard-Adapter.Publish">Publish()</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_neard_adp__call_publish_finish() to get the result of the operation.
+ *
+ * See org_neard_adp__call_publish_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_neard_adp__call_publish (
+    orgNeardAdp *proxy,
+    GVariant *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "Publish",
+    g_variant_new ("(@a{sv})",
+                   arg_unnamed_arg0),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * org_neard_adp__call_publish_finish:
+ * @proxy: A #orgNeardAdpProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_adp__call_publish().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_neard_adp__call_publish().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_adp__call_publish_finish (
+    orgNeardAdp *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_neard_adp__call_publish_sync:
+ * @proxy: A #orgNeardAdpProxy.
+ * @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-neard-Adapter.Publish">Publish()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_adp__call_publish() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_adp__call_publish_sync (
+    orgNeardAdp *proxy,
+    GVariant *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "Publish",
+    g_variant_new ("(@a{sv})",
+                   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_neard_adp__complete_get_properties:
+ * @object: A #orgNeardAdp.
+ * @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-neard-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_neard_adp__complete_get_properties (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg0)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a{sv})",
+                   unnamed_arg0));
+}
+
+/**
+ * org_neard_adp__complete_set_property:
+ * @object: A #orgNeardAdp.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-neard-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_neard_adp__complete_set_property (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * org_neard_adp__complete_start_poll:
+ * @object: A #orgNeardAdp.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-neard-Adapter.StartPoll">StartPoll()</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_neard_adp__complete_start_poll (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * org_neard_adp__complete_stop_poll:
+ * @object: A #orgNeardAdp.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-neard-Adapter.StopPoll">StopPoll()</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_neard_adp__complete_stop_poll (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/**
+ * org_neard_adp__complete_publish:
+ * @object: A #orgNeardAdp.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-neard-Adapter.Publish">Publish()</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_neard_adp__complete_publish (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * orgNeardAdpProxy:
+ *
+ * The #orgNeardAdpProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * orgNeardAdpProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #orgNeardAdpProxy.
+ */
+
+struct _orgNeardAdpProxyPrivate
+{
+  GData *qdata;
+};
+
+static void org_neard_adp__proxy_iface_init (orgNeardAdpIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (orgNeardAdpProxy, org_neard_adp__proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (ORG_NEARD_ADP_TYPE_, org_neard_adp__proxy_iface_init));
+
+static void
+org_neard_adp__proxy_finalize (GObject *object)
+{
+  orgNeardAdpProxy *proxy = ORG_NEARD_ADP__PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (org_neard_adp__proxy_parent_class)->finalize (object);
+}
+
+static void
+org_neard_adp__proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_neard_adp__proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_neard_adp__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_neard_adp__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], ORG_NEARD_ADP_TYPE_);
+  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, ORG_NEARD_ADP_TYPE_);
+  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_neard_adp__proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  orgNeardAdpProxy *proxy = ORG_NEARD_ADP__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_neard_adp__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_neard_adp__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_neard_adp__proxy_init (orgNeardAdpProxy *proxy)
+{
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, ORG_NEARD_ADP_TYPE__PROXY, orgNeardAdpProxyPrivate);
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_neard_adp__interface_info ());
+}
+
+static void
+org_neard_adp__proxy_class_init (orgNeardAdpProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  g_type_class_add_private (klass, sizeof (orgNeardAdpProxyPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = org_neard_adp__proxy_finalize;
+  gobject_class->get_property = org_neard_adp__proxy_get_property;
+  gobject_class->set_property = org_neard_adp__proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = org_neard_adp__proxy_g_signal;
+  proxy_class->g_properties_changed = org_neard_adp__proxy_g_properties_changed;
+
+}
+
+static void
+org_neard_adp__proxy_iface_init (orgNeardAdpIface *iface)
+{
+}
+
+/**
+ * org_neard_adp__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-neard-Adapter.top_of_page">org.neard.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_neard_adp__proxy_new_finish() to get the result of the operation.
+ *
+ * See org_neard_adp__proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_neard_adp__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 (ORG_NEARD_ADP_TYPE__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.neard.Adapter", NULL);
+}
+
+/**
+ * org_neard_adp__proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_adp__proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_neard_adp__proxy_new().
+ *
+ * Returns: (transfer full) (type orgNeardAdpProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardAdp *
+org_neard_adp__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_NEARD_ADP_ (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_neard_adp__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-neard-Adapter.top_of_page">org.neard.Adapter</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_adp__proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type orgNeardAdpProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardAdp *
+org_neard_adp__proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (ORG_NEARD_ADP_TYPE__PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.neard.Adapter", NULL);
+  if (ret != NULL)
+    return ORG_NEARD_ADP_ (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * org_neard_adp__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_neard_adp__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_neard_adp__proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See org_neard_adp__proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_neard_adp__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 (ORG_NEARD_ADP_TYPE__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.neard.Adapter", NULL);
+}
+
+/**
+ * org_neard_adp__proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_adp__proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_neard_adp__proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type orgNeardAdpProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardAdp *
+org_neard_adp__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_NEARD_ADP_ (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_neard_adp__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_neard_adp__proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_adp__proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type orgNeardAdpProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardAdp *
+org_neard_adp__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 (ORG_NEARD_ADP_TYPE__PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.neard.Adapter", NULL);
+  if (ret != NULL)
+    return ORG_NEARD_ADP_ (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * orgNeardAdpSkeleton:
+ *
+ * The #orgNeardAdpSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * orgNeardAdpSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #orgNeardAdpSkeleton.
+ */
+
+struct _orgNeardAdpSkeletonPrivate
+{
+  GValueArray *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex *lock;
+};
+
+static void
+_org_neard_adp__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)
+{
+  orgNeardAdpSkeleton *skeleton = ORG_NEARD_ADP__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 = {0};
+  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], ORG_NEARD_ADP_TYPE_);
+  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, ORG_NEARD_ADP_TYPE_);
+  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_neard_adp__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)
+{
+  orgNeardAdpSkeleton *skeleton = ORG_NEARD_ADP__SKELETON (user_data);
+  GValue value = {0};
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_neard_adp__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_neard_adp__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)
+{
+  orgNeardAdpSkeleton *skeleton = ORG_NEARD_ADP__SKELETON (user_data);
+  GValue value = {0};
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_neard_adp__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_neard_adp__skeleton_vtable =
+{
+  _org_neard_adp__skeleton_handle_method_call,
+  _org_neard_adp__skeleton_handle_get_property,
+  _org_neard_adp__skeleton_handle_set_property
+};
+
+static GDBusInterfaceInfo *
+org_neard_adp__skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton)
+{
+  return org_neard_adp__interface_info ();
+}
+
+static GDBusInterfaceVTable *
+org_neard_adp__skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton)
+{
+  return (GDBusInterfaceVTable *) &_org_neard_adp__skeleton_vtable;
+}
+
+static GVariant *
+org_neard_adp__skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  orgNeardAdpSkeleton *skeleton = ORG_NEARD_ADP__SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_org_neard_adp__interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _org_neard_adp__interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _org_neard_adp__interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _org_neard_adp__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.neard.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_neard_adp__skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_org_neard_adp__on_signal_property_changed (
+    orgNeardAdp *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1)
+{
+  orgNeardAdpSkeleton *skeleton = ORG_NEARD_ADP__SKELETON (object);
+  GDBusConnection *connection = g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton));
+  if (connection == NULL)
+    return;
+  g_dbus_connection_emit_signal (connection,
+    NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.neard.Adapter", "PropertyChanged",
+    g_variant_new ("(s@v)",
+                   arg_unnamed_arg0,
+                   arg_unnamed_arg1), NULL);
+}
+
+static void
+_org_neard_adp__on_signal_target_found (
+    orgNeardAdp *object,
+    const gchar *arg_unnamed_arg0)
+{
+  orgNeardAdpSkeleton *skeleton = ORG_NEARD_ADP__SKELETON (object);
+  GDBusConnection *connection = g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton));
+  if (connection == NULL)
+    return;
+  g_dbus_connection_emit_signal (connection,
+    NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.neard.Adapter", "TargetFound",
+    g_variant_new ("(o)",
+                   arg_unnamed_arg0), NULL);
+}
+
+static void
+_org_neard_adp__on_signal_target_lost (
+    orgNeardAdp *object,
+    const gchar *arg_unnamed_arg0)
+{
+  orgNeardAdpSkeleton *skeleton = ORG_NEARD_ADP__SKELETON (object);
+  GDBusConnection *connection = g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton));
+  if (connection == NULL)
+    return;
+  g_dbus_connection_emit_signal (connection,
+    NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.neard.Adapter", "TargetLost",
+    g_variant_new ("(o)",
+                   arg_unnamed_arg0), NULL);
+}
+
+static void org_neard_adp__skeleton_iface_init (orgNeardAdpIface *iface);
+G_DEFINE_TYPE_WITH_CODE (orgNeardAdpSkeleton, org_neard_adp__skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (ORG_NEARD_ADP_TYPE_, org_neard_adp__skeleton_iface_init));
+
+static void
+org_neard_adp__skeleton_finalize (GObject *object)
+{
+  orgNeardAdpSkeleton *skeleton = ORG_NEARD_ADP__SKELETON (object);
+  g_list_foreach (skeleton->priv->changed_properties, (GFunc) _changed_property_free, NULL);
+  g_list_free (skeleton->priv->changed_properties);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  if (skeleton->priv->context != NULL)
+    g_main_context_unref (skeleton->priv->context);
+  g_mutex_free (skeleton->priv->lock);
+  G_OBJECT_CLASS (org_neard_adp__skeleton_parent_class)->finalize (object);
+}
+
+static void
+org_neard_adp__skeleton_init (orgNeardAdpSkeleton *skeleton)
+{
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, ORG_NEARD_ADP_TYPE__SKELETON, orgNeardAdpSkeletonPrivate);
+  skeleton->priv->lock = g_mutex_new ();
+  skeleton->priv->context = g_main_context_get_thread_default ();
+  if (skeleton->priv->context != NULL)
+    g_main_context_ref (skeleton->priv->context);
+}
+
+static void
+org_neard_adp__skeleton_class_init (orgNeardAdpSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  g_type_class_add_private (klass, sizeof (orgNeardAdpSkeletonPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = org_neard_adp__skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = org_neard_adp__skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = org_neard_adp__skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = org_neard_adp__skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = org_neard_adp__skeleton_dbus_interface_get_vtable;
+}
+
+static void
+org_neard_adp__skeleton_iface_init (orgNeardAdpIface *iface)
+{
+  iface->property_changed = _org_neard_adp__on_signal_property_changed;
+  iface->target_found = _org_neard_adp__on_signal_target_found;
+  iface->target_lost = _org_neard_adp__on_signal_target_lost;
+}
+
+/**
+ * org_neard_adp__skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-neard-Adapter.top_of_page">org.neard.Adapter</link>.
+ *
+ * Returns: (transfer full) (type orgNeardAdpSkeleton): The skeleton object.
+ */
+orgNeardAdp *
+org_neard_adp__skeleton_new (void)
+{
+  return ORG_NEARD_ADP_ (g_object_new (ORG_NEARD_ADP_TYPE__SKELETON, NULL));
+}
+
diff --git a/lib/neard_adapter_proxy.h b/lib/neard_adapter_proxy.h
new file mode 100644 (file)
index 0000000..6c269bc
--- /dev/null
@@ -0,0 +1,305 @@
+/*
+ * Generated by gdbus-codegen 2.30.0. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __NEARD_ADAPTER_PROXY_H__
+#define __NEARD_ADAPTER_PROXY_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.neard.Adapter */
+
+#define ORG_NEARD_ADP_TYPE_ (org_neard_adp__get_type ())
+#define ORG_NEARD_ADP_(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ORG_NEARD_ADP_TYPE_, orgNeardAdp))
+#define ORG_NEARD_ADP_IS_(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ORG_NEARD_ADP_TYPE_))
+#define ORG_NEARD_ADP__GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), ORG_NEARD_ADP_TYPE_, orgNeardAdpIface))
+
+struct _orgNeardAdp;
+typedef struct _orgNeardAdp orgNeardAdp;
+typedef struct _orgNeardAdpIface orgNeardAdpIface;
+
+struct _orgNeardAdpIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_get_properties) (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_publish) (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *arg_unnamed_arg0);
+
+  gboolean (*handle_set_property) (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+  gboolean (*handle_start_poll) (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_stop_poll) (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation);
+
+  void (*property_changed) (
+    orgNeardAdp *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+  void (*target_found) (
+    orgNeardAdp *object,
+    const gchar *arg_unnamed_arg0);
+
+  void (*target_lost) (
+    orgNeardAdp *object,
+    const gchar *arg_unnamed_arg0);
+
+};
+
+GType org_neard_adp__get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *org_neard_adp__interface_info (void);
+guint org_neard_adp__override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void org_neard_adp__complete_get_properties (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg0);
+
+void org_neard_adp__complete_set_property (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation);
+
+void org_neard_adp__complete_start_poll (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation);
+
+void org_neard_adp__complete_stop_poll (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation);
+
+void org_neard_adp__complete_publish (
+    orgNeardAdp *object,
+    GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus signal emissions functions: */
+void org_neard_adp__emit_property_changed (
+    orgNeardAdp *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+void org_neard_adp__emit_target_found (
+    orgNeardAdp *object,
+    const gchar *arg_unnamed_arg0);
+
+void org_neard_adp__emit_target_lost (
+    orgNeardAdp *object,
+    const gchar *arg_unnamed_arg0);
+
+
+
+/* D-Bus method calls: */
+void org_neard_adp__call_get_properties (
+    orgNeardAdp *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_neard_adp__call_get_properties_finish (
+    orgNeardAdp *proxy,
+    GVariant **out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_neard_adp__call_get_properties_sync (
+    orgNeardAdp *proxy,
+    GVariant **out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_neard_adp__call_set_property (
+    orgNeardAdp *proxy,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_neard_adp__call_set_property_finish (
+    orgNeardAdp *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_neard_adp__call_set_property_sync (
+    orgNeardAdp *proxy,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_neard_adp__call_start_poll (
+    orgNeardAdp *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_neard_adp__call_start_poll_finish (
+    orgNeardAdp *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_neard_adp__call_start_poll_sync (
+    orgNeardAdp *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_neard_adp__call_stop_poll (
+    orgNeardAdp *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_neard_adp__call_stop_poll_finish (
+    orgNeardAdp *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_neard_adp__call_stop_poll_sync (
+    orgNeardAdp *proxy,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_neard_adp__call_publish (
+    orgNeardAdp *proxy,
+    GVariant *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_neard_adp__call_publish_finish (
+    orgNeardAdp *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_neard_adp__call_publish_sync (
+    orgNeardAdp *proxy,
+    GVariant *arg_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define ORG_NEARD_ADP_TYPE__PROXY (org_neard_adp__proxy_get_type ())
+#define ORG_NEARD_ADP__PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ORG_NEARD_ADP_TYPE__PROXY, orgNeardAdpProxy))
+#define ORG_NEARD_ADP__PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), ORG_NEARD_ADP_TYPE__PROXY, orgNeardAdpProxyClass))
+#define ORG_NEARD_ADP__PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ORG_NEARD_ADP_TYPE__PROXY, orgNeardAdpProxyClass))
+#define ORG_NEARD_ADP_IS__PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ORG_NEARD_ADP_TYPE__PROXY))
+#define ORG_NEARD_ADP_IS__PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), ORG_NEARD_ADP_TYPE__PROXY))
+
+typedef struct _orgNeardAdpProxy orgNeardAdpProxy;
+typedef struct _orgNeardAdpProxyClass orgNeardAdpProxyClass;
+typedef struct _orgNeardAdpProxyPrivate orgNeardAdpProxyPrivate;
+
+struct _orgNeardAdpProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  orgNeardAdpProxyPrivate *priv;
+};
+
+struct _orgNeardAdpProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType org_neard_adp__proxy_get_type (void) G_GNUC_CONST;
+
+void org_neard_adp__proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+orgNeardAdp *org_neard_adp__proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+orgNeardAdp *org_neard_adp__proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void org_neard_adp__proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+orgNeardAdp *org_neard_adp__proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+orgNeardAdp *org_neard_adp__proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define ORG_NEARD_ADP_TYPE__SKELETON (org_neard_adp__skeleton_get_type ())
+#define ORG_NEARD_ADP__SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ORG_NEARD_ADP_TYPE__SKELETON, orgNeardAdpSkeleton))
+#define ORG_NEARD_ADP__SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), ORG_NEARD_ADP_TYPE__SKELETON, orgNeardAdpSkeletonClass))
+#define ORG_NEARD_ADP__SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ORG_NEARD_ADP_TYPE__SKELETON, orgNeardAdpSkeletonClass))
+#define ORG_NEARD_ADP_IS__SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ORG_NEARD_ADP_TYPE__SKELETON))
+#define ORG_NEARD_ADP_IS__SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), ORG_NEARD_ADP_TYPE__SKELETON))
+
+typedef struct _orgNeardAdpSkeleton orgNeardAdpSkeleton;
+typedef struct _orgNeardAdpSkeletonClass orgNeardAdpSkeletonClass;
+typedef struct _orgNeardAdpSkeletonPrivate orgNeardAdpSkeletonPrivate;
+
+struct _orgNeardAdpSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  orgNeardAdpSkeletonPrivate *priv;
+};
+
+struct _orgNeardAdpSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType org_neard_adp__skeleton_get_type (void) G_GNUC_CONST;
+
+orgNeardAdp *org_neard_adp__skeleton_new (void);
+
+
+G_END_DECLS
+
+#endif /* __NEARD_ADAPTER_PROXY_H__ */
diff --git a/lib/neard_manager_proxy.c b/lib/neard_manager_proxy.c
new file mode 100644 (file)
index 0000000..38b5116
--- /dev/null
@@ -0,0 +1,1462 @@
+/*
+ * Generated by gdbus-codegen 2.30.0. 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 "neard_manager_proxy.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.neard.Manager
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:orgNeardMgr
+ * @title: orgNeardMgr
+ * @short_description: Generated C code for the org.neard.Manager D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-neard-Manager.top_of_page">org.neard.Manager</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.neard.Manager ---- */
+
+static const _ExtendedGDBusArgInfo _org_neard_mgr__method_info_get_properties_OUT_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_mgr__method_info_get_properties_OUT_ARG_pointers[] =
+{
+  &_org_neard_mgr__method_info_get_properties_OUT_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_neard_mgr__method_info_get_properties =
+{
+  {
+    -1,
+    "GetProperties",
+    NULL,
+    (GDBusArgInfo **) &_org_neard_mgr__method_info_get_properties_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-properties",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_mgr__method_info_set_property_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_mgr__method_info_set_property_IN_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_mgr__method_info_set_property_IN_ARG_pointers[] =
+{
+  &_org_neard_mgr__method_info_set_property_IN_ARG_unnamed_arg0,
+  &_org_neard_mgr__method_info_set_property_IN_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_neard_mgr__method_info_set_property =
+{
+  {
+    -1,
+    "SetProperty",
+    (GDBusArgInfo **) &_org_neard_mgr__method_info_set_property_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-set-property",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _org_neard_mgr__method_info_pointers[] =
+{
+  &_org_neard_mgr__method_info_get_properties,
+  &_org_neard_mgr__method_info_set_property,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_mgr__signal_info_property_changed_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_mgr__signal_info_property_changed_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_mgr__signal_info_property_changed_ARG_pointers[] =
+{
+  &_org_neard_mgr__signal_info_property_changed_ARG_unnamed_arg0,
+  &_org_neard_mgr__signal_info_property_changed_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_neard_mgr__signal_info_property_changed =
+{
+  {
+    -1,
+    "PropertyChanged",
+    (GDBusArgInfo **) &_org_neard_mgr__signal_info_property_changed_ARG_pointers,
+    NULL
+  },
+  "property-changed"
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_mgr__signal_info_adapter_added_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_mgr__signal_info_adapter_added_ARG_pointers[] =
+{
+  &_org_neard_mgr__signal_info_adapter_added_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_neard_mgr__signal_info_adapter_added =
+{
+  {
+    -1,
+    "AdapterAdded",
+    (GDBusArgInfo **) &_org_neard_mgr__signal_info_adapter_added_ARG_pointers,
+    NULL
+  },
+  "adapter-added"
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_mgr__signal_info_adapter_removed_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "o",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_mgr__signal_info_adapter_removed_ARG_pointers[] =
+{
+  &_org_neard_mgr__signal_info_adapter_removed_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_neard_mgr__signal_info_adapter_removed =
+{
+  {
+    -1,
+    "AdapterRemoved",
+    (GDBusArgInfo **) &_org_neard_mgr__signal_info_adapter_removed_ARG_pointers,
+    NULL
+  },
+  "adapter-removed"
+};
+
+static const _ExtendedGDBusSignalInfo * const _org_neard_mgr__signal_info_pointers[] =
+{
+  &_org_neard_mgr__signal_info_property_changed,
+  &_org_neard_mgr__signal_info_adapter_added,
+  &_org_neard_mgr__signal_info_adapter_removed,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _org_neard_mgr__interface_info =
+{
+  {
+    -1,
+    "org.neard.Manager",
+    (GDBusMethodInfo **) &_org_neard_mgr__method_info_pointers,
+    (GDBusSignalInfo **) &_org_neard_mgr__signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "",
+};
+
+
+/**
+ * org_neard_mgr__interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-neard-Manager.top_of_page">org.neard.Manager</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+org_neard_mgr__interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_org_neard_mgr__interface_info;
+}
+
+/**
+ * org_neard_mgr__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 #orgNeardMgr interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+org_neard_mgr__override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * orgNeardMgr:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-neard-Manager.top_of_page">org.neard.Manager</link>.
+ */
+
+/**
+ * orgNeardMgrIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_properties: Handler for the #orgNeardMgr::handle-get-properties signal.
+ * @handle_set_property: Handler for the #orgNeardMgr::handle-set-property signal.
+ * @adapter_added: Handler for the #orgNeardMgr::adapter-added signal.
+ * @adapter_removed: Handler for the #orgNeardMgr::adapter-removed signal.
+ * @property_changed: Handler for the #orgNeardMgr::property-changed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-neard-Manager.top_of_page">org.neard.Manager</link>.
+ */
+
+static void
+org_neard_mgr__default_init (orgNeardMgrIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * orgNeardMgr::handle-get-properties:
+   * @object: A #orgNeardMgr.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-neard-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_neard_mgr__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 (orgNeardMgrIface, handle_get_properties),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * orgNeardMgr::handle-set-property:
+   * @object: A #orgNeardMgr.
+   * @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-neard-Manager.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_neard_mgr__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 (orgNeardMgrIface, 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);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * orgNeardMgr::property-changed:
+   * @object: A #orgNeardMgr.
+   * @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-neard-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 (orgNeardMgrIface, property_changed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+  /**
+   * orgNeardMgr::adapter-added:
+   * @object: A #orgNeardMgr.
+   * @arg_unnamed_arg0: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-neard-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 (orgNeardMgrIface, adapter_added),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+  /**
+   * orgNeardMgr::adapter-removed:
+   * @object: A #orgNeardMgr.
+   * @arg_unnamed_arg0: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-neard-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 (orgNeardMgrIface, adapter_removed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+}
+
+typedef orgNeardMgrIface orgNeardMgrInterface;
+G_DEFINE_INTERFACE (orgNeardMgr, org_neard_mgr_, G_TYPE_OBJECT);
+
+/**
+ * org_neard_mgr__emit_property_changed:
+ * @object: A #orgNeardMgr.
+ * @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-neard-Manager.PropertyChanged">"PropertyChanged"</link> D-Bus signal.
+ */
+void
+org_neard_mgr__emit_property_changed (
+    orgNeardMgr *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_neard_mgr__emit_adapter_added:
+ * @object: A #orgNeardMgr.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-neard-Manager.AdapterAdded">"AdapterAdded"</link> D-Bus signal.
+ */
+void
+org_neard_mgr__emit_adapter_added (
+    orgNeardMgr *object,
+    const gchar *arg_unnamed_arg0)
+{
+  g_signal_emit_by_name (object, "adapter-added", arg_unnamed_arg0);
+}
+
+/**
+ * org_neard_mgr__emit_adapter_removed:
+ * @object: A #orgNeardMgr.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-neard-Manager.AdapterRemoved">"AdapterRemoved"</link> D-Bus signal.
+ */
+void
+org_neard_mgr__emit_adapter_removed (
+    orgNeardMgr *object,
+    const gchar *arg_unnamed_arg0)
+{
+  g_signal_emit_by_name (object, "adapter-removed", arg_unnamed_arg0);
+}
+
+/**
+ * org_neard_mgr__call_get_properties:
+ * @proxy: A #orgNeardMgrProxy.
+ * @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-neard-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_neard_mgr__call_get_properties_finish() to get the result of the operation.
+ *
+ * See org_neard_mgr__call_get_properties_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_neard_mgr__call_get_properties (
+    orgNeardMgr *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_neard_mgr__call_get_properties_finish:
+ * @proxy: A #orgNeardMgrProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_mgr__call_get_properties().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_neard_mgr__call_get_properties().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_mgr__call_get_properties_finish (
+    orgNeardMgr *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_neard_mgr__call_get_properties_sync:
+ * @proxy: A #orgNeardMgrProxy.
+ * @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-neard-Manager.GetProperties">GetProperties()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_mgr__call_get_properties() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_mgr__call_get_properties_sync (
+    orgNeardMgr *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_neard_mgr__call_set_property:
+ * @proxy: A #orgNeardMgrProxy.
+ * @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-neard-Manager.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_neard_mgr__call_set_property_finish() to get the result of the operation.
+ *
+ * See org_neard_mgr__call_set_property_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_neard_mgr__call_set_property (
+    orgNeardMgr *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_neard_mgr__call_set_property_finish:
+ * @proxy: A #orgNeardMgrProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_mgr__call_set_property().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_neard_mgr__call_set_property().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_mgr__call_set_property_finish (
+    orgNeardMgr *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_neard_mgr__call_set_property_sync:
+ * @proxy: A #orgNeardMgrProxy.
+ * @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-neard-Manager.SetProperty">SetProperty()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_mgr__call_set_property() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_mgr__call_set_property_sync (
+    orgNeardMgr *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_neard_mgr__complete_get_properties:
+ * @object: A #orgNeardMgr.
+ * @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-neard-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_neard_mgr__complete_get_properties (
+    orgNeardMgr *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg0)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a{sv})",
+                   unnamed_arg0));
+}
+
+/**
+ * org_neard_mgr__complete_set_property:
+ * @object: A #orgNeardMgr.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-neard-Manager.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_neard_mgr__complete_set_property (
+    orgNeardMgr *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * orgNeardMgrProxy:
+ *
+ * The #orgNeardMgrProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * orgNeardMgrProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #orgNeardMgrProxy.
+ */
+
+struct _orgNeardMgrProxyPrivate
+{
+  GData *qdata;
+};
+
+static void org_neard_mgr__proxy_iface_init (orgNeardMgrIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (orgNeardMgrProxy, org_neard_mgr__proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (ORG_NEARD_MGR_TYPE_, org_neard_mgr__proxy_iface_init));
+
+static void
+org_neard_mgr__proxy_finalize (GObject *object)
+{
+  orgNeardMgrProxy *proxy = ORG_NEARD_MGR__PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (org_neard_mgr__proxy_parent_class)->finalize (object);
+}
+
+static void
+org_neard_mgr__proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_neard_mgr__proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_neard_mgr__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_neard_mgr__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], ORG_NEARD_MGR_TYPE_);
+  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, ORG_NEARD_MGR_TYPE_);
+  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_neard_mgr__proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  orgNeardMgrProxy *proxy = ORG_NEARD_MGR__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_neard_mgr__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_neard_mgr__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_neard_mgr__proxy_init (orgNeardMgrProxy *proxy)
+{
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, ORG_NEARD_MGR_TYPE__PROXY, orgNeardMgrProxyPrivate);
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_neard_mgr__interface_info ());
+}
+
+static void
+org_neard_mgr__proxy_class_init (orgNeardMgrProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  g_type_class_add_private (klass, sizeof (orgNeardMgrProxyPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = org_neard_mgr__proxy_finalize;
+  gobject_class->get_property = org_neard_mgr__proxy_get_property;
+  gobject_class->set_property = org_neard_mgr__proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = org_neard_mgr__proxy_g_signal;
+  proxy_class->g_properties_changed = org_neard_mgr__proxy_g_properties_changed;
+
+}
+
+static void
+org_neard_mgr__proxy_iface_init (orgNeardMgrIface *iface)
+{
+}
+
+/**
+ * org_neard_mgr__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-neard-Manager.top_of_page">org.neard.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_neard_mgr__proxy_new_finish() to get the result of the operation.
+ *
+ * See org_neard_mgr__proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_neard_mgr__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 (ORG_NEARD_MGR_TYPE__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.neard.Manager", NULL);
+}
+
+/**
+ * org_neard_mgr__proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_mgr__proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_neard_mgr__proxy_new().
+ *
+ * Returns: (transfer full) (type orgNeardMgrProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardMgr *
+org_neard_mgr__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_NEARD_MGR_ (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_neard_mgr__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-neard-Manager.top_of_page">org.neard.Manager</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_mgr__proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type orgNeardMgrProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardMgr *
+org_neard_mgr__proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (ORG_NEARD_MGR_TYPE__PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.neard.Manager", NULL);
+  if (ret != NULL)
+    return ORG_NEARD_MGR_ (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * org_neard_mgr__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_neard_mgr__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_neard_mgr__proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See org_neard_mgr__proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_neard_mgr__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 (ORG_NEARD_MGR_TYPE__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.neard.Manager", NULL);
+}
+
+/**
+ * org_neard_mgr__proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_mgr__proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_neard_mgr__proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type orgNeardMgrProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardMgr *
+org_neard_mgr__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_NEARD_MGR_ (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_neard_mgr__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_neard_mgr__proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_mgr__proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type orgNeardMgrProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardMgr *
+org_neard_mgr__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 (ORG_NEARD_MGR_TYPE__PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.neard.Manager", NULL);
+  if (ret != NULL)
+    return ORG_NEARD_MGR_ (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * orgNeardMgrSkeleton:
+ *
+ * The #orgNeardMgrSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * orgNeardMgrSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #orgNeardMgrSkeleton.
+ */
+
+struct _orgNeardMgrSkeletonPrivate
+{
+  GValueArray *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex *lock;
+};
+
+static void
+_org_neard_mgr__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)
+{
+  orgNeardMgrSkeleton *skeleton = ORG_NEARD_MGR__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 = {0};
+  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], ORG_NEARD_MGR_TYPE_);
+  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, ORG_NEARD_MGR_TYPE_);
+  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_neard_mgr__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)
+{
+  orgNeardMgrSkeleton *skeleton = ORG_NEARD_MGR__SKELETON (user_data);
+  GValue value = {0};
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_neard_mgr__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_neard_mgr__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)
+{
+  orgNeardMgrSkeleton *skeleton = ORG_NEARD_MGR__SKELETON (user_data);
+  GValue value = {0};
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_neard_mgr__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_neard_mgr__skeleton_vtable =
+{
+  _org_neard_mgr__skeleton_handle_method_call,
+  _org_neard_mgr__skeleton_handle_get_property,
+  _org_neard_mgr__skeleton_handle_set_property
+};
+
+static GDBusInterfaceInfo *
+org_neard_mgr__skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton)
+{
+  return org_neard_mgr__interface_info ();
+}
+
+static GDBusInterfaceVTable *
+org_neard_mgr__skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton)
+{
+  return (GDBusInterfaceVTable *) &_org_neard_mgr__skeleton_vtable;
+}
+
+static GVariant *
+org_neard_mgr__skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  orgNeardMgrSkeleton *skeleton = ORG_NEARD_MGR__SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_org_neard_mgr__interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _org_neard_mgr__interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _org_neard_mgr__interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _org_neard_mgr__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.neard.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_neard_mgr__skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_org_neard_mgr__on_signal_property_changed (
+    orgNeardMgr *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1)
+{
+  orgNeardMgrSkeleton *skeleton = ORG_NEARD_MGR__SKELETON (object);
+  GDBusConnection *connection = g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton));
+  if (connection == NULL)
+    return;
+  g_dbus_connection_emit_signal (connection,
+    NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.neard.Manager", "PropertyChanged",
+    g_variant_new ("(s@v)",
+                   arg_unnamed_arg0,
+                   arg_unnamed_arg1), NULL);
+}
+
+static void
+_org_neard_mgr__on_signal_adapter_added (
+    orgNeardMgr *object,
+    const gchar *arg_unnamed_arg0)
+{
+  orgNeardMgrSkeleton *skeleton = ORG_NEARD_MGR__SKELETON (object);
+  GDBusConnection *connection = g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton));
+  if (connection == NULL)
+    return;
+  g_dbus_connection_emit_signal (connection,
+    NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.neard.Manager", "AdapterAdded",
+    g_variant_new ("(o)",
+                   arg_unnamed_arg0), NULL);
+}
+
+static void
+_org_neard_mgr__on_signal_adapter_removed (
+    orgNeardMgr *object,
+    const gchar *arg_unnamed_arg0)
+{
+  orgNeardMgrSkeleton *skeleton = ORG_NEARD_MGR__SKELETON (object);
+  GDBusConnection *connection = g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton));
+  if (connection == NULL)
+    return;
+  g_dbus_connection_emit_signal (connection,
+    NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.neard.Manager", "AdapterRemoved",
+    g_variant_new ("(o)",
+                   arg_unnamed_arg0), NULL);
+}
+
+static void org_neard_mgr__skeleton_iface_init (orgNeardMgrIface *iface);
+G_DEFINE_TYPE_WITH_CODE (orgNeardMgrSkeleton, org_neard_mgr__skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (ORG_NEARD_MGR_TYPE_, org_neard_mgr__skeleton_iface_init));
+
+static void
+org_neard_mgr__skeleton_finalize (GObject *object)
+{
+  orgNeardMgrSkeleton *skeleton = ORG_NEARD_MGR__SKELETON (object);
+  g_list_foreach (skeleton->priv->changed_properties, (GFunc) _changed_property_free, NULL);
+  g_list_free (skeleton->priv->changed_properties);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  if (skeleton->priv->context != NULL)
+    g_main_context_unref (skeleton->priv->context);
+  g_mutex_free (skeleton->priv->lock);
+  G_OBJECT_CLASS (org_neard_mgr__skeleton_parent_class)->finalize (object);
+}
+
+static void
+org_neard_mgr__skeleton_init (orgNeardMgrSkeleton *skeleton)
+{
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, ORG_NEARD_MGR_TYPE__SKELETON, orgNeardMgrSkeletonPrivate);
+  skeleton->priv->lock = g_mutex_new ();
+  skeleton->priv->context = g_main_context_get_thread_default ();
+  if (skeleton->priv->context != NULL)
+    g_main_context_ref (skeleton->priv->context);
+}
+
+static void
+org_neard_mgr__skeleton_class_init (orgNeardMgrSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  g_type_class_add_private (klass, sizeof (orgNeardMgrSkeletonPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = org_neard_mgr__skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = org_neard_mgr__skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = org_neard_mgr__skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = org_neard_mgr__skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = org_neard_mgr__skeleton_dbus_interface_get_vtable;
+}
+
+static void
+org_neard_mgr__skeleton_iface_init (orgNeardMgrIface *iface)
+{
+  iface->property_changed = _org_neard_mgr__on_signal_property_changed;
+  iface->adapter_added = _org_neard_mgr__on_signal_adapter_added;
+  iface->adapter_removed = _org_neard_mgr__on_signal_adapter_removed;
+}
+
+/**
+ * org_neard_mgr__skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-neard-Manager.top_of_page">org.neard.Manager</link>.
+ *
+ * Returns: (transfer full) (type orgNeardMgrSkeleton): The skeleton object.
+ */
+orgNeardMgr *
+org_neard_mgr__skeleton_new (void)
+{
+  return ORG_NEARD_MGR_ (g_object_new (ORG_NEARD_MGR_TYPE__SKELETON, NULL));
+}
+
diff --git a/lib/neard_manager_proxy.h b/lib/neard_manager_proxy.h
new file mode 100644 (file)
index 0000000..ece6f6f
--- /dev/null
@@ -0,0 +1,230 @@
+/*
+ * Generated by gdbus-codegen 2.30.0. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __NEARD_MANAGER_PROXY_H__
+#define __NEARD_MANAGER_PROXY_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.neard.Manager */
+
+#define ORG_NEARD_MGR_TYPE_ (org_neard_mgr__get_type ())
+#define ORG_NEARD_MGR_(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ORG_NEARD_MGR_TYPE_, orgNeardMgr))
+#define ORG_NEARD_MGR_IS_(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ORG_NEARD_MGR_TYPE_))
+#define ORG_NEARD_MGR__GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), ORG_NEARD_MGR_TYPE_, orgNeardMgrIface))
+
+struct _orgNeardMgr;
+typedef struct _orgNeardMgr orgNeardMgr;
+typedef struct _orgNeardMgrIface orgNeardMgrIface;
+
+struct _orgNeardMgrIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_get_properties) (
+    orgNeardMgr *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_set_property) (
+    orgNeardMgr *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+  void (*adapter_added) (
+    orgNeardMgr *object,
+    const gchar *arg_unnamed_arg0);
+
+  void (*adapter_removed) (
+    orgNeardMgr *object,
+    const gchar *arg_unnamed_arg0);
+
+  void (*property_changed) (
+    orgNeardMgr *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+};
+
+GType org_neard_mgr__get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *org_neard_mgr__interface_info (void);
+guint org_neard_mgr__override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void org_neard_mgr__complete_get_properties (
+    orgNeardMgr *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg0);
+
+void org_neard_mgr__complete_set_property (
+    orgNeardMgr *object,
+    GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus signal emissions functions: */
+void org_neard_mgr__emit_property_changed (
+    orgNeardMgr *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+void org_neard_mgr__emit_adapter_added (
+    orgNeardMgr *object,
+    const gchar *arg_unnamed_arg0);
+
+void org_neard_mgr__emit_adapter_removed (
+    orgNeardMgr *object,
+    const gchar *arg_unnamed_arg0);
+
+
+
+/* D-Bus method calls: */
+void org_neard_mgr__call_get_properties (
+    orgNeardMgr *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_neard_mgr__call_get_properties_finish (
+    orgNeardMgr *proxy,
+    GVariant **out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_neard_mgr__call_get_properties_sync (
+    orgNeardMgr *proxy,
+    GVariant **out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_neard_mgr__call_set_property (
+    orgNeardMgr *proxy,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_neard_mgr__call_set_property_finish (
+    orgNeardMgr *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_neard_mgr__call_set_property_sync (
+    orgNeardMgr *proxy,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define ORG_NEARD_MGR_TYPE__PROXY (org_neard_mgr__proxy_get_type ())
+#define ORG_NEARD_MGR__PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ORG_NEARD_MGR_TYPE__PROXY, orgNeardMgrProxy))
+#define ORG_NEARD_MGR__PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), ORG_NEARD_MGR_TYPE__PROXY, orgNeardMgrProxyClass))
+#define ORG_NEARD_MGR__PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ORG_NEARD_MGR_TYPE__PROXY, orgNeardMgrProxyClass))
+#define ORG_NEARD_MGR_IS__PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ORG_NEARD_MGR_TYPE__PROXY))
+#define ORG_NEARD_MGR_IS__PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), ORG_NEARD_MGR_TYPE__PROXY))
+
+typedef struct _orgNeardMgrProxy orgNeardMgrProxy;
+typedef struct _orgNeardMgrProxyClass orgNeardMgrProxyClass;
+typedef struct _orgNeardMgrProxyPrivate orgNeardMgrProxyPrivate;
+
+struct _orgNeardMgrProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  orgNeardMgrProxyPrivate *priv;
+};
+
+struct _orgNeardMgrProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType org_neard_mgr__proxy_get_type (void) G_GNUC_CONST;
+
+void org_neard_mgr__proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+orgNeardMgr *org_neard_mgr__proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+orgNeardMgr *org_neard_mgr__proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void org_neard_mgr__proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+orgNeardMgr *org_neard_mgr__proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+orgNeardMgr *org_neard_mgr__proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define ORG_NEARD_MGR_TYPE__SKELETON (org_neard_mgr__skeleton_get_type ())
+#define ORG_NEARD_MGR__SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ORG_NEARD_MGR_TYPE__SKELETON, orgNeardMgrSkeleton))
+#define ORG_NEARD_MGR__SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), ORG_NEARD_MGR_TYPE__SKELETON, orgNeardMgrSkeletonClass))
+#define ORG_NEARD_MGR__SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ORG_NEARD_MGR_TYPE__SKELETON, orgNeardMgrSkeletonClass))
+#define ORG_NEARD_MGR_IS__SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ORG_NEARD_MGR_TYPE__SKELETON))
+#define ORG_NEARD_MGR_IS__SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), ORG_NEARD_MGR_TYPE__SKELETON))
+
+typedef struct _orgNeardMgrSkeleton orgNeardMgrSkeleton;
+typedef struct _orgNeardMgrSkeletonClass orgNeardMgrSkeletonClass;
+typedef struct _orgNeardMgrSkeletonPrivate orgNeardMgrSkeletonPrivate;
+
+struct _orgNeardMgrSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  orgNeardMgrSkeletonPrivate *priv;
+};
+
+struct _orgNeardMgrSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType org_neard_mgr__skeleton_get_type (void) G_GNUC_CONST;
+
+orgNeardMgr *org_neard_mgr__skeleton_new (void);
+
+
+G_END_DECLS
+
+#endif /* __NEARD_MANAGER_PROXY_H__ */
diff --git a/lib/neard_record_proxy.c b/lib/neard_record_proxy.c
new file mode 100644 (file)
index 0000000..9cb3950
--- /dev/null
@@ -0,0 +1,1009 @@
+/*
+ * Generated by gdbus-codegen 2.30.0. 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 "neard_record_proxy.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.neard.Record
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:orgNeardRcd
+ * @title: orgNeardRcd
+ * @short_description: Generated C code for the org.neard.Record D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-neard-Record.top_of_page">org.neard.Record</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.neard.Record ---- */
+
+static const _ExtendedGDBusArgInfo _org_neard_rcd__method_info_get_properties_OUT_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_rcd__method_info_get_properties_OUT_ARG_pointers[] =
+{
+  &_org_neard_rcd__method_info_get_properties_OUT_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_neard_rcd__method_info_get_properties =
+{
+  {
+    -1,
+    "GetProperties",
+    NULL,
+    (GDBusArgInfo **) &_org_neard_rcd__method_info_get_properties_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-properties",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _org_neard_rcd__method_info_pointers[] =
+{
+  &_org_neard_rcd__method_info_get_properties,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _org_neard_rcd__interface_info =
+{
+  {
+    -1,
+    "org.neard.Record",
+    (GDBusMethodInfo **) &_org_neard_rcd__method_info_pointers,
+    NULL,
+    NULL,
+    NULL
+  },
+  "",
+};
+
+
+/**
+ * org_neard_rcd__interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-neard-Record.top_of_page">org.neard.Record</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+org_neard_rcd__interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_org_neard_rcd__interface_info;
+}
+
+/**
+ * org_neard_rcd__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 #orgNeardRcd interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+org_neard_rcd__override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * orgNeardRcd:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-neard-Record.top_of_page">org.neard.Record</link>.
+ */
+
+/**
+ * orgNeardRcdIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_properties: Handler for the #orgNeardRcd::handle-get-properties signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-neard-Record.top_of_page">org.neard.Record</link>.
+ */
+
+static void
+org_neard_rcd__default_init (orgNeardRcdIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * orgNeardRcd::handle-get-properties:
+   * @object: A #orgNeardRcd.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-neard-Record.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_neard_rcd__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 (orgNeardRcdIface, handle_get_properties),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+}
+
+typedef orgNeardRcdIface orgNeardRcdInterface;
+G_DEFINE_INTERFACE (orgNeardRcd, org_neard_rcd_, G_TYPE_OBJECT);
+
+/**
+ * org_neard_rcd__call_get_properties:
+ * @proxy: A #orgNeardRcdProxy.
+ * @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-neard-Record.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_neard_rcd__call_get_properties_finish() to get the result of the operation.
+ *
+ * See org_neard_rcd__call_get_properties_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_neard_rcd__call_get_properties (
+    orgNeardRcd *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_neard_rcd__call_get_properties_finish:
+ * @proxy: A #orgNeardRcdProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_rcd__call_get_properties().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_neard_rcd__call_get_properties().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_rcd__call_get_properties_finish (
+    orgNeardRcd *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_neard_rcd__call_get_properties_sync:
+ * @proxy: A #orgNeardRcdProxy.
+ * @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-neard-Record.GetProperties">GetProperties()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_rcd__call_get_properties() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_rcd__call_get_properties_sync (
+    orgNeardRcd *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_neard_rcd__complete_get_properties:
+ * @object: A #orgNeardRcd.
+ * @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-neard-Record.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_neard_rcd__complete_get_properties (
+    orgNeardRcd *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg0)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a{sv})",
+                   unnamed_arg0));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * orgNeardRcdProxy:
+ *
+ * The #orgNeardRcdProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * orgNeardRcdProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #orgNeardRcdProxy.
+ */
+
+struct _orgNeardRcdProxyPrivate
+{
+  GData *qdata;
+};
+
+static void org_neard_rcd__proxy_iface_init (orgNeardRcdIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (orgNeardRcdProxy, org_neard_rcd__proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (ORG_NEARD_RCD_TYPE_, org_neard_rcd__proxy_iface_init));
+
+static void
+org_neard_rcd__proxy_finalize (GObject *object)
+{
+  orgNeardRcdProxy *proxy = ORG_NEARD_RCD__PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (org_neard_rcd__proxy_parent_class)->finalize (object);
+}
+
+static void
+org_neard_rcd__proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_neard_rcd__proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_neard_rcd__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_neard_rcd__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], ORG_NEARD_RCD_TYPE_);
+  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, ORG_NEARD_RCD_TYPE_);
+  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_neard_rcd__proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  orgNeardRcdProxy *proxy = ORG_NEARD_RCD__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_neard_rcd__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_neard_rcd__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_neard_rcd__proxy_init (orgNeardRcdProxy *proxy)
+{
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, ORG_NEARD_RCD_TYPE__PROXY, orgNeardRcdProxyPrivate);
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_neard_rcd__interface_info ());
+}
+
+static void
+org_neard_rcd__proxy_class_init (orgNeardRcdProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  g_type_class_add_private (klass, sizeof (orgNeardRcdProxyPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = org_neard_rcd__proxy_finalize;
+  gobject_class->get_property = org_neard_rcd__proxy_get_property;
+  gobject_class->set_property = org_neard_rcd__proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = org_neard_rcd__proxy_g_signal;
+  proxy_class->g_properties_changed = org_neard_rcd__proxy_g_properties_changed;
+
+}
+
+static void
+org_neard_rcd__proxy_iface_init (orgNeardRcdIface *iface)
+{
+}
+
+/**
+ * org_neard_rcd__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-neard-Record.top_of_page">org.neard.Record</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_neard_rcd__proxy_new_finish() to get the result of the operation.
+ *
+ * See org_neard_rcd__proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_neard_rcd__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 (ORG_NEARD_RCD_TYPE__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.neard.Record", NULL);
+}
+
+/**
+ * org_neard_rcd__proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_rcd__proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_neard_rcd__proxy_new().
+ *
+ * Returns: (transfer full) (type orgNeardRcdProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardRcd *
+org_neard_rcd__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_NEARD_RCD_ (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_neard_rcd__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-neard-Record.top_of_page">org.neard.Record</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_rcd__proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type orgNeardRcdProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardRcd *
+org_neard_rcd__proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (ORG_NEARD_RCD_TYPE__PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.neard.Record", NULL);
+  if (ret != NULL)
+    return ORG_NEARD_RCD_ (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * org_neard_rcd__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_neard_rcd__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_neard_rcd__proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See org_neard_rcd__proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_neard_rcd__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 (ORG_NEARD_RCD_TYPE__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.neard.Record", NULL);
+}
+
+/**
+ * org_neard_rcd__proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_rcd__proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_neard_rcd__proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type orgNeardRcdProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardRcd *
+org_neard_rcd__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_NEARD_RCD_ (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_neard_rcd__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_neard_rcd__proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_rcd__proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type orgNeardRcdProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardRcd *
+org_neard_rcd__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 (ORG_NEARD_RCD_TYPE__PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.neard.Record", NULL);
+  if (ret != NULL)
+    return ORG_NEARD_RCD_ (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * orgNeardRcdSkeleton:
+ *
+ * The #orgNeardRcdSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * orgNeardRcdSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #orgNeardRcdSkeleton.
+ */
+
+struct _orgNeardRcdSkeletonPrivate
+{
+  GValueArray *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex *lock;
+};
+
+static void
+_org_neard_rcd__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)
+{
+  orgNeardRcdSkeleton *skeleton = ORG_NEARD_RCD__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 = {0};
+  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], ORG_NEARD_RCD_TYPE_);
+  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, ORG_NEARD_RCD_TYPE_);
+  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_neard_rcd__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)
+{
+  orgNeardRcdSkeleton *skeleton = ORG_NEARD_RCD__SKELETON (user_data);
+  GValue value = {0};
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_neard_rcd__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_neard_rcd__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)
+{
+  orgNeardRcdSkeleton *skeleton = ORG_NEARD_RCD__SKELETON (user_data);
+  GValue value = {0};
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_neard_rcd__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_neard_rcd__skeleton_vtable =
+{
+  _org_neard_rcd__skeleton_handle_method_call,
+  _org_neard_rcd__skeleton_handle_get_property,
+  _org_neard_rcd__skeleton_handle_set_property
+};
+
+static GDBusInterfaceInfo *
+org_neard_rcd__skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton)
+{
+  return org_neard_rcd__interface_info ();
+}
+
+static GDBusInterfaceVTable *
+org_neard_rcd__skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton)
+{
+  return (GDBusInterfaceVTable *) &_org_neard_rcd__skeleton_vtable;
+}
+
+static GVariant *
+org_neard_rcd__skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  orgNeardRcdSkeleton *skeleton = ORG_NEARD_RCD__SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_org_neard_rcd__interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _org_neard_rcd__interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _org_neard_rcd__interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _org_neard_rcd__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.neard.Record", 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_neard_rcd__skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void org_neard_rcd__skeleton_iface_init (orgNeardRcdIface *iface);
+G_DEFINE_TYPE_WITH_CODE (orgNeardRcdSkeleton, org_neard_rcd__skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (ORG_NEARD_RCD_TYPE_, org_neard_rcd__skeleton_iface_init));
+
+static void
+org_neard_rcd__skeleton_finalize (GObject *object)
+{
+  orgNeardRcdSkeleton *skeleton = ORG_NEARD_RCD__SKELETON (object);
+  g_list_foreach (skeleton->priv->changed_properties, (GFunc) _changed_property_free, NULL);
+  g_list_free (skeleton->priv->changed_properties);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  if (skeleton->priv->context != NULL)
+    g_main_context_unref (skeleton->priv->context);
+  g_mutex_free (skeleton->priv->lock);
+  G_OBJECT_CLASS (org_neard_rcd__skeleton_parent_class)->finalize (object);
+}
+
+static void
+org_neard_rcd__skeleton_init (orgNeardRcdSkeleton *skeleton)
+{
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, ORG_NEARD_RCD_TYPE__SKELETON, orgNeardRcdSkeletonPrivate);
+  skeleton->priv->lock = g_mutex_new ();
+  skeleton->priv->context = g_main_context_get_thread_default ();
+  if (skeleton->priv->context != NULL)
+    g_main_context_ref (skeleton->priv->context);
+}
+
+static void
+org_neard_rcd__skeleton_class_init (orgNeardRcdSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  g_type_class_add_private (klass, sizeof (orgNeardRcdSkeletonPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = org_neard_rcd__skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = org_neard_rcd__skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = org_neard_rcd__skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = org_neard_rcd__skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = org_neard_rcd__skeleton_dbus_interface_get_vtable;
+}
+
+static void
+org_neard_rcd__skeleton_iface_init (orgNeardRcdIface *iface)
+{
+}
+
+/**
+ * org_neard_rcd__skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-neard-Record.top_of_page">org.neard.Record</link>.
+ *
+ * Returns: (transfer full) (type orgNeardRcdSkeleton): The skeleton object.
+ */
+orgNeardRcd *
+org_neard_rcd__skeleton_new (void)
+{
+  return ORG_NEARD_RCD_ (g_object_new (ORG_NEARD_RCD_TYPE__SKELETON, NULL));
+}
+
diff --git a/lib/neard_record_proxy.h b/lib/neard_record_proxy.h
new file mode 100644 (file)
index 0000000..36aeabb
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * Generated by gdbus-codegen 2.30.0. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __NEARD_RECORD_PROXY_H__
+#define __NEARD_RECORD_PROXY_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.neard.Record */
+
+#define ORG_NEARD_RCD_TYPE_ (org_neard_rcd__get_type ())
+#define ORG_NEARD_RCD_(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ORG_NEARD_RCD_TYPE_, orgNeardRcd))
+#define ORG_NEARD_RCD_IS_(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ORG_NEARD_RCD_TYPE_))
+#define ORG_NEARD_RCD__GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), ORG_NEARD_RCD_TYPE_, orgNeardRcdIface))
+
+struct _orgNeardRcd;
+typedef struct _orgNeardRcd orgNeardRcd;
+typedef struct _orgNeardRcdIface orgNeardRcdIface;
+
+struct _orgNeardRcdIface
+{
+  GTypeInterface parent_iface;
+
+  gboolean (*handle_get_properties) (
+    orgNeardRcd *object,
+    GDBusMethodInvocation *invocation);
+
+};
+
+GType org_neard_rcd__get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *org_neard_rcd__interface_info (void);
+guint org_neard_rcd__override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void org_neard_rcd__complete_get_properties (
+    orgNeardRcd *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg0);
+
+
+
+/* D-Bus method calls: */
+void org_neard_rcd__call_get_properties (
+    orgNeardRcd *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_neard_rcd__call_get_properties_finish (
+    orgNeardRcd *proxy,
+    GVariant **out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_neard_rcd__call_get_properties_sync (
+    orgNeardRcd *proxy,
+    GVariant **out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define ORG_NEARD_RCD_TYPE__PROXY (org_neard_rcd__proxy_get_type ())
+#define ORG_NEARD_RCD__PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ORG_NEARD_RCD_TYPE__PROXY, orgNeardRcdProxy))
+#define ORG_NEARD_RCD__PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), ORG_NEARD_RCD_TYPE__PROXY, orgNeardRcdProxyClass))
+#define ORG_NEARD_RCD__PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ORG_NEARD_RCD_TYPE__PROXY, orgNeardRcdProxyClass))
+#define ORG_NEARD_RCD_IS__PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ORG_NEARD_RCD_TYPE__PROXY))
+#define ORG_NEARD_RCD_IS__PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), ORG_NEARD_RCD_TYPE__PROXY))
+
+typedef struct _orgNeardRcdProxy orgNeardRcdProxy;
+typedef struct _orgNeardRcdProxyClass orgNeardRcdProxyClass;
+typedef struct _orgNeardRcdProxyPrivate orgNeardRcdProxyPrivate;
+
+struct _orgNeardRcdProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  orgNeardRcdProxyPrivate *priv;
+};
+
+struct _orgNeardRcdProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType org_neard_rcd__proxy_get_type (void) G_GNUC_CONST;
+
+void org_neard_rcd__proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+orgNeardRcd *org_neard_rcd__proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+orgNeardRcd *org_neard_rcd__proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void org_neard_rcd__proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+orgNeardRcd *org_neard_rcd__proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+orgNeardRcd *org_neard_rcd__proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define ORG_NEARD_RCD_TYPE__SKELETON (org_neard_rcd__skeleton_get_type ())
+#define ORG_NEARD_RCD__SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ORG_NEARD_RCD_TYPE__SKELETON, orgNeardRcdSkeleton))
+#define ORG_NEARD_RCD__SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), ORG_NEARD_RCD_TYPE__SKELETON, orgNeardRcdSkeletonClass))
+#define ORG_NEARD_RCD__SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ORG_NEARD_RCD_TYPE__SKELETON, orgNeardRcdSkeletonClass))
+#define ORG_NEARD_RCD_IS__SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ORG_NEARD_RCD_TYPE__SKELETON))
+#define ORG_NEARD_RCD_IS__SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), ORG_NEARD_RCD_TYPE__SKELETON))
+
+typedef struct _orgNeardRcdSkeleton orgNeardRcdSkeleton;
+typedef struct _orgNeardRcdSkeletonClass orgNeardRcdSkeletonClass;
+typedef struct _orgNeardRcdSkeletonPrivate orgNeardRcdSkeletonPrivate;
+
+struct _orgNeardRcdSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  orgNeardRcdSkeletonPrivate *priv;
+};
+
+struct _orgNeardRcdSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType org_neard_rcd__skeleton_get_type (void) G_GNUC_CONST;
+
+orgNeardRcd *org_neard_rcd__skeleton_new (void);
+
+
+G_END_DECLS
+
+#endif /* __NEARD_RECORD_PROXY_H__ */
diff --git a/lib/neard_target_proxy.c b/lib/neard_target_proxy.c
new file mode 100644 (file)
index 0000000..9d25b24
--- /dev/null
@@ -0,0 +1,1302 @@
+/*
+ * Generated by gdbus-codegen 2.30.0. 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 "neard_target_proxy.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.neard.Target
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:orgNeardTgt
+ * @title: orgNeardTgt
+ * @short_description: Generated C code for the org.neard.Target D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-neard-Target.top_of_page">org.neard.Target</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.neard.Target ---- */
+
+static const _ExtendedGDBusArgInfo _org_neard_tgt__method_info_get_properties_OUT_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "a{sv}",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_tgt__method_info_get_properties_OUT_ARG_pointers[] =
+{
+  &_org_neard_tgt__method_info_get_properties_OUT_ARG_unnamed_arg0,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_neard_tgt__method_info_get_properties =
+{
+  {
+    -1,
+    "GetProperties",
+    NULL,
+    (GDBusArgInfo **) &_org_neard_tgt__method_info_get_properties_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-get-properties",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_tgt__method_info_set_property_IN_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_tgt__method_info_set_property_IN_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_tgt__method_info_set_property_IN_ARG_pointers[] =
+{
+  &_org_neard_tgt__method_info_set_property_IN_ARG_unnamed_arg0,
+  &_org_neard_tgt__method_info_set_property_IN_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_neard_tgt__method_info_set_property =
+{
+  {
+    -1,
+    "SetProperty",
+    (GDBusArgInfo **) &_org_neard_tgt__method_info_set_property_IN_ARG_pointers,
+    NULL,
+    NULL
+  },
+  "handle-set-property",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _org_neard_tgt__method_info_pointers[] =
+{
+  &_org_neard_tgt__method_info_get_properties,
+  &_org_neard_tgt__method_info_set_property,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_tgt__signal_info_property_changed_ARG_unnamed_arg0 =
+{
+  {
+    -1,
+    "unnamed_arg0",
+    "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_neard_tgt__signal_info_property_changed_ARG_unnamed_arg1 =
+{
+  {
+    -1,
+    "unnamed_arg1",
+    "v",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_neard_tgt__signal_info_property_changed_ARG_pointers[] =
+{
+  &_org_neard_tgt__signal_info_property_changed_ARG_unnamed_arg0,
+  &_org_neard_tgt__signal_info_property_changed_ARG_unnamed_arg1,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_neard_tgt__signal_info_property_changed =
+{
+  {
+    -1,
+    "PropertyChanged",
+    (GDBusArgInfo **) &_org_neard_tgt__signal_info_property_changed_ARG_pointers,
+    NULL
+  },
+  "property-changed"
+};
+
+static const _ExtendedGDBusSignalInfo * const _org_neard_tgt__signal_info_pointers[] =
+{
+  &_org_neard_tgt__signal_info_property_changed,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _org_neard_tgt__interface_info =
+{
+  {
+    -1,
+    "org.neard.Target",
+    (GDBusMethodInfo **) &_org_neard_tgt__method_info_pointers,
+    (GDBusSignalInfo **) &_org_neard_tgt__signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "",
+};
+
+
+/**
+ * org_neard_tgt__interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-neard-Target.top_of_page">org.neard.Target</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+org_neard_tgt__interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_org_neard_tgt__interface_info;
+}
+
+/**
+ * org_neard_tgt__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 #orgNeardTgt interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+org_neard_tgt__override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * orgNeardTgt:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-neard-Target.top_of_page">org.neard.Target</link>.
+ */
+
+/**
+ * orgNeardTgtIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_properties: Handler for the #orgNeardTgt::handle-get-properties signal.
+ * @handle_set_property: Handler for the #orgNeardTgt::handle-set-property signal.
+ * @property_changed: Handler for the #orgNeardTgt::property-changed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-neard-Target.top_of_page">org.neard.Target</link>.
+ */
+
+static void
+org_neard_tgt__default_init (orgNeardTgtIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * orgNeardTgt::handle-get-properties:
+   * @object: A #orgNeardTgt.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-neard-Target.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_neard_tgt__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 (orgNeardTgtIface, handle_get_properties),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    1,
+    G_TYPE_DBUS_METHOD_INVOCATION);
+
+  /**
+   * orgNeardTgt::handle-set-property:
+   * @object: A #orgNeardTgt.
+   * @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-neard-Target.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_neard_tgt__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 (orgNeardTgtIface, 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);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * orgNeardTgt::property-changed:
+   * @object: A #orgNeardTgt.
+   * @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-neard-Target.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 (orgNeardTgtIface, property_changed),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+}
+
+typedef orgNeardTgtIface orgNeardTgtInterface;
+G_DEFINE_INTERFACE (orgNeardTgt, org_neard_tgt_, G_TYPE_OBJECT);
+
+/**
+ * org_neard_tgt__emit_property_changed:
+ * @object: A #orgNeardTgt.
+ * @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-neard-Target.PropertyChanged">"PropertyChanged"</link> D-Bus signal.
+ */
+void
+org_neard_tgt__emit_property_changed (
+    orgNeardTgt *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_neard_tgt__call_get_properties:
+ * @proxy: A #orgNeardTgtProxy.
+ * @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-neard-Target.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_neard_tgt__call_get_properties_finish() to get the result of the operation.
+ *
+ * See org_neard_tgt__call_get_properties_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_neard_tgt__call_get_properties (
+    orgNeardTgt *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_neard_tgt__call_get_properties_finish:
+ * @proxy: A #orgNeardTgtProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_tgt__call_get_properties().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_neard_tgt__call_get_properties().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_tgt__call_get_properties_finish (
+    orgNeardTgt *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_neard_tgt__call_get_properties_sync:
+ * @proxy: A #orgNeardTgtProxy.
+ * @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-neard-Target.GetProperties">GetProperties()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_tgt__call_get_properties() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_tgt__call_get_properties_sync (
+    orgNeardTgt *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_neard_tgt__call_set_property:
+ * @proxy: A #orgNeardTgtProxy.
+ * @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-neard-Target.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_neard_tgt__call_set_property_finish() to get the result of the operation.
+ *
+ * See org_neard_tgt__call_set_property_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_neard_tgt__call_set_property (
+    orgNeardTgt *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_neard_tgt__call_set_property_finish:
+ * @proxy: A #orgNeardTgtProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_tgt__call_set_property().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_neard_tgt__call_set_property().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_tgt__call_set_property_finish (
+    orgNeardTgt *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_neard_tgt__call_set_property_sync:
+ * @proxy: A #orgNeardTgtProxy.
+ * @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-neard-Target.SetProperty">SetProperty()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_tgt__call_set_property() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_neard_tgt__call_set_property_sync (
+    orgNeardTgt *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_neard_tgt__complete_get_properties:
+ * @object: A #orgNeardTgt.
+ * @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-neard-Target.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_neard_tgt__complete_get_properties (
+    orgNeardTgt *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg0)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@a{sv})",
+                   unnamed_arg0));
+}
+
+/**
+ * org_neard_tgt__complete_set_property:
+ * @object: A #orgNeardTgt.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-neard-Target.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_neard_tgt__complete_set_property (
+    orgNeardTgt *object,
+    GDBusMethodInvocation *invocation)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("()"));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * orgNeardTgtProxy:
+ *
+ * The #orgNeardTgtProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * orgNeardTgtProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #orgNeardTgtProxy.
+ */
+
+struct _orgNeardTgtProxyPrivate
+{
+  GData *qdata;
+};
+
+static void org_neard_tgt__proxy_iface_init (orgNeardTgtIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (orgNeardTgtProxy, org_neard_tgt__proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (ORG_NEARD_TGT_TYPE_, org_neard_tgt__proxy_iface_init));
+
+static void
+org_neard_tgt__proxy_finalize (GObject *object)
+{
+  orgNeardTgtProxy *proxy = ORG_NEARD_TGT__PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (org_neard_tgt__proxy_parent_class)->finalize (object);
+}
+
+static void
+org_neard_tgt__proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_neard_tgt__proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec)
+{
+}
+
+static void
+org_neard_tgt__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_neard_tgt__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], ORG_NEARD_TGT_TYPE_);
+  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, ORG_NEARD_TGT_TYPE_);
+  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_neard_tgt__proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  orgNeardTgtProxy *proxy = ORG_NEARD_TGT__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_neard_tgt__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_neard_tgt__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_neard_tgt__proxy_init (orgNeardTgtProxy *proxy)
+{
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, ORG_NEARD_TGT_TYPE__PROXY, orgNeardTgtProxyPrivate);
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_neard_tgt__interface_info ());
+}
+
+static void
+org_neard_tgt__proxy_class_init (orgNeardTgtProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  g_type_class_add_private (klass, sizeof (orgNeardTgtProxyPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = org_neard_tgt__proxy_finalize;
+  gobject_class->get_property = org_neard_tgt__proxy_get_property;
+  gobject_class->set_property = org_neard_tgt__proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = org_neard_tgt__proxy_g_signal;
+  proxy_class->g_properties_changed = org_neard_tgt__proxy_g_properties_changed;
+
+}
+
+static void
+org_neard_tgt__proxy_iface_init (orgNeardTgtIface *iface)
+{
+}
+
+/**
+ * org_neard_tgt__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-neard-Target.top_of_page">org.neard.Target</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_neard_tgt__proxy_new_finish() to get the result of the operation.
+ *
+ * See org_neard_tgt__proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_neard_tgt__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 (ORG_NEARD_TGT_TYPE__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.neard.Target", NULL);
+}
+
+/**
+ * org_neard_tgt__proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_tgt__proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_neard_tgt__proxy_new().
+ *
+ * Returns: (transfer full) (type orgNeardTgtProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardTgt *
+org_neard_tgt__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_NEARD_TGT_ (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_neard_tgt__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-neard-Target.top_of_page">org.neard.Target</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_tgt__proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type orgNeardTgtProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardTgt *
+org_neard_tgt__proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (ORG_NEARD_TGT_TYPE__PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.neard.Target", NULL);
+  if (ret != NULL)
+    return ORG_NEARD_TGT_ (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * org_neard_tgt__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_neard_tgt__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_neard_tgt__proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See org_neard_tgt__proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_neard_tgt__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 (ORG_NEARD_TGT_TYPE__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.neard.Target", NULL);
+}
+
+/**
+ * org_neard_tgt__proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_neard_tgt__proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_neard_tgt__proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type orgNeardTgtProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardTgt *
+org_neard_tgt__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_NEARD_TGT_ (ret);
+  else
+    return NULL;
+}
+
+/**
+ * org_neard_tgt__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_neard_tgt__proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_neard_tgt__proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type orgNeardTgtProxy): The constructed proxy object or %NULL if @error is set.
+ */
+orgNeardTgt *
+org_neard_tgt__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 (ORG_NEARD_TGT_TYPE__PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.neard.Target", NULL);
+  if (ret != NULL)
+    return ORG_NEARD_TGT_ (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * orgNeardTgtSkeleton:
+ *
+ * The #orgNeardTgtSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * orgNeardTgtSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #orgNeardTgtSkeleton.
+ */
+
+struct _orgNeardTgtSkeletonPrivate
+{
+  GValueArray *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex *lock;
+};
+
+static void
+_org_neard_tgt__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)
+{
+  orgNeardTgtSkeleton *skeleton = ORG_NEARD_TGT__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 = {0};
+  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], ORG_NEARD_TGT_TYPE_);
+  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, ORG_NEARD_TGT_TYPE_);
+  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_neard_tgt__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)
+{
+  orgNeardTgtSkeleton *skeleton = ORG_NEARD_TGT__SKELETON (user_data);
+  GValue value = {0};
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_neard_tgt__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_neard_tgt__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)
+{
+  orgNeardTgtSkeleton *skeleton = ORG_NEARD_TGT__SKELETON (user_data);
+  GValue value = {0};
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_neard_tgt__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_neard_tgt__skeleton_vtable =
+{
+  _org_neard_tgt__skeleton_handle_method_call,
+  _org_neard_tgt__skeleton_handle_get_property,
+  _org_neard_tgt__skeleton_handle_set_property
+};
+
+static GDBusInterfaceInfo *
+org_neard_tgt__skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton)
+{
+  return org_neard_tgt__interface_info ();
+}
+
+static GDBusInterfaceVTable *
+org_neard_tgt__skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton)
+{
+  return (GDBusInterfaceVTable *) &_org_neard_tgt__skeleton_vtable;
+}
+
+static GVariant *
+org_neard_tgt__skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  orgNeardTgtSkeleton *skeleton = ORG_NEARD_TGT__SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_org_neard_tgt__interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _org_neard_tgt__interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _org_neard_tgt__interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _org_neard_tgt__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.neard.Target", 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_neard_tgt__skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_org_neard_tgt__on_signal_property_changed (
+    orgNeardTgt *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1)
+{
+  orgNeardTgtSkeleton *skeleton = ORG_NEARD_TGT__SKELETON (object);
+  GDBusConnection *connection = g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton));
+  if (connection == NULL)
+    return;
+  g_dbus_connection_emit_signal (connection,
+    NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.neard.Target", "PropertyChanged",
+    g_variant_new ("(s@v)",
+                   arg_unnamed_arg0,
+                   arg_unnamed_arg1), NULL);
+}
+
+static void org_neard_tgt__skeleton_iface_init (orgNeardTgtIface *iface);
+G_DEFINE_TYPE_WITH_CODE (orgNeardTgtSkeleton, org_neard_tgt__skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (ORG_NEARD_TGT_TYPE_, org_neard_tgt__skeleton_iface_init));
+
+static void
+org_neard_tgt__skeleton_finalize (GObject *object)
+{
+  orgNeardTgtSkeleton *skeleton = ORG_NEARD_TGT__SKELETON (object);
+  g_list_foreach (skeleton->priv->changed_properties, (GFunc) _changed_property_free, NULL);
+  g_list_free (skeleton->priv->changed_properties);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  if (skeleton->priv->context != NULL)
+    g_main_context_unref (skeleton->priv->context);
+  g_mutex_free (skeleton->priv->lock);
+  G_OBJECT_CLASS (org_neard_tgt__skeleton_parent_class)->finalize (object);
+}
+
+static void
+org_neard_tgt__skeleton_init (orgNeardTgtSkeleton *skeleton)
+{
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, ORG_NEARD_TGT_TYPE__SKELETON, orgNeardTgtSkeletonPrivate);
+  skeleton->priv->lock = g_mutex_new ();
+  skeleton->priv->context = g_main_context_get_thread_default ();
+  if (skeleton->priv->context != NULL)
+    g_main_context_ref (skeleton->priv->context);
+}
+
+static void
+org_neard_tgt__skeleton_class_init (orgNeardTgtSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  g_type_class_add_private (klass, sizeof (orgNeardTgtSkeletonPrivate));
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = org_neard_tgt__skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = org_neard_tgt__skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = org_neard_tgt__skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = org_neard_tgt__skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = org_neard_tgt__skeleton_dbus_interface_get_vtable;
+}
+
+static void
+org_neard_tgt__skeleton_iface_init (orgNeardTgtIface *iface)
+{
+  iface->property_changed = _org_neard_tgt__on_signal_property_changed;
+}
+
+/**
+ * org_neard_tgt__skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-neard-Target.top_of_page">org.neard.Target</link>.
+ *
+ * Returns: (transfer full) (type orgNeardTgtSkeleton): The skeleton object.
+ */
+orgNeardTgt *
+org_neard_tgt__skeleton_new (void)
+{
+  return ORG_NEARD_TGT_ (g_object_new (ORG_NEARD_TGT_TYPE__SKELETON, NULL));
+}
+
diff --git a/lib/neard_target_proxy.h b/lib/neard_target_proxy.h
new file mode 100644 (file)
index 0000000..7b028ee
--- /dev/null
@@ -0,0 +1,214 @@
+/*
+ * Generated by gdbus-codegen 2.30.0. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __NEARD_TARGET_PROXY_H__
+#define __NEARD_TARGET_PROXY_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.neard.Target */
+
+#define ORG_NEARD_TGT_TYPE_ (org_neard_tgt__get_type ())
+#define ORG_NEARD_TGT_(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ORG_NEARD_TGT_TYPE_, orgNeardTgt))
+#define ORG_NEARD_TGT_IS_(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ORG_NEARD_TGT_TYPE_))
+#define ORG_NEARD_TGT__GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), ORG_NEARD_TGT_TYPE_, orgNeardTgtIface))
+
+struct _orgNeardTgt;
+typedef struct _orgNeardTgt orgNeardTgt;
+typedef struct _orgNeardTgtIface orgNeardTgtIface;
+
+struct _orgNeardTgtIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_get_properties) (
+    orgNeardTgt *object,
+    GDBusMethodInvocation *invocation);
+
+  gboolean (*handle_set_property) (
+    orgNeardTgt *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+  void (*property_changed) (
+    orgNeardTgt *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+};
+
+GType org_neard_tgt__get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *org_neard_tgt__interface_info (void);
+guint org_neard_tgt__override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void org_neard_tgt__complete_get_properties (
+    orgNeardTgt *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *unnamed_arg0);
+
+void org_neard_tgt__complete_set_property (
+    orgNeardTgt *object,
+    GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus signal emissions functions: */
+void org_neard_tgt__emit_property_changed (
+    orgNeardTgt *object,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1);
+
+
+
+/* D-Bus method calls: */
+void org_neard_tgt__call_get_properties (
+    orgNeardTgt *proxy,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_neard_tgt__call_get_properties_finish (
+    orgNeardTgt *proxy,
+    GVariant **out_unnamed_arg0,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_neard_tgt__call_get_properties_sync (
+    orgNeardTgt *proxy,
+    GVariant **out_unnamed_arg0,
+    GCancellable *cancellable,
+    GError **error);
+
+void org_neard_tgt__call_set_property (
+    orgNeardTgt *proxy,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean org_neard_tgt__call_set_property_finish (
+    orgNeardTgt *proxy,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean org_neard_tgt__call_set_property_sync (
+    orgNeardTgt *proxy,
+    const gchar *arg_unnamed_arg0,
+    GVariant *arg_unnamed_arg1,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define ORG_NEARD_TGT_TYPE__PROXY (org_neard_tgt__proxy_get_type ())
+#define ORG_NEARD_TGT__PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ORG_NEARD_TGT_TYPE__PROXY, orgNeardTgtProxy))
+#define ORG_NEARD_TGT__PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), ORG_NEARD_TGT_TYPE__PROXY, orgNeardTgtProxyClass))
+#define ORG_NEARD_TGT__PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ORG_NEARD_TGT_TYPE__PROXY, orgNeardTgtProxyClass))
+#define ORG_NEARD_TGT_IS__PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ORG_NEARD_TGT_TYPE__PROXY))
+#define ORG_NEARD_TGT_IS__PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), ORG_NEARD_TGT_TYPE__PROXY))
+
+typedef struct _orgNeardTgtProxy orgNeardTgtProxy;
+typedef struct _orgNeardTgtProxyClass orgNeardTgtProxyClass;
+typedef struct _orgNeardTgtProxyPrivate orgNeardTgtProxyPrivate;
+
+struct _orgNeardTgtProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  orgNeardTgtProxyPrivate *priv;
+};
+
+struct _orgNeardTgtProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType org_neard_tgt__proxy_get_type (void) G_GNUC_CONST;
+
+void org_neard_tgt__proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+orgNeardTgt *org_neard_tgt__proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+orgNeardTgt *org_neard_tgt__proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void org_neard_tgt__proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+orgNeardTgt *org_neard_tgt__proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+orgNeardTgt *org_neard_tgt__proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define ORG_NEARD_TGT_TYPE__SKELETON (org_neard_tgt__skeleton_get_type ())
+#define ORG_NEARD_TGT__SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ORG_NEARD_TGT_TYPE__SKELETON, orgNeardTgtSkeleton))
+#define ORG_NEARD_TGT__SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), ORG_NEARD_TGT_TYPE__SKELETON, orgNeardTgtSkeletonClass))
+#define ORG_NEARD_TGT__SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ORG_NEARD_TGT_TYPE__SKELETON, orgNeardTgtSkeletonClass))
+#define ORG_NEARD_TGT_IS__SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ORG_NEARD_TGT_TYPE__SKELETON))
+#define ORG_NEARD_TGT_IS__SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), ORG_NEARD_TGT_TYPE__SKELETON))
+
+typedef struct _orgNeardTgtSkeleton orgNeardTgtSkeleton;
+typedef struct _orgNeardTgtSkeletonClass orgNeardTgtSkeletonClass;
+typedef struct _orgNeardTgtSkeletonPrivate orgNeardTgtSkeletonPrivate;
+
+struct _orgNeardTgtSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  orgNeardTgtSkeletonPrivate *priv;
+};
+
+struct _orgNeardTgtSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType org_neard_tgt__skeleton_get_type (void) G_GNUC_CONST;
+
+orgNeardTgt *org_neard_tgt__skeleton_new (void);
+
+
+G_END_DECLS
+
+#endif /* __NEARD_TARGET_PROXY_H__ */
index a976250..d9dcbc1 100644 (file)
 #include <stdio.h>
 #include <string.h>
 #include <glib.h>
-#include <dbus/dbus-glib.h>
 #include <glib-object.h>
-#include "dbus/dbus.h"
 
-#include "neard-manager-proxy.h"
-#include "neard-adapter-proxy.h"
+#include "neard_manager_proxy.h"
+#include "neard_adapter_proxy.h"
 
 #include "neardal.h"
 #include "neardal_prv.h"
  * 'NEARDAL adapter added'.
  * cb_adp_added = NULL to remove actual callback.
  *****************************************************************************/
-errorCode_t neardal_set_cb_adapter_added(neardal_t neardalObj,
+errorCode_t neardal_set_cb_adapter_added(neardal_t neardalMgr,
                                         adapter_cb cb_adp_added,
                                         void *user_data)
 {
        errorCode_t err = NEARDAL_ERROR_INVALID_PARAMETER;
 
-       if (neardalObj != NULL) {
-               neardalObj->cb_adp_added = cb_adp_added;
-               neardalObj->cb_adp_added_ud = user_data;
+       if (neardalMgr != NULL) {
+               neardalMgr->cb_adp_added = cb_adp_added;
+               neardalMgr->cb_adp_added_ud = user_data;
                err = NEARDAL_SUCCESS;
        }
 
@@ -59,15 +57,15 @@ errorCode_t neardal_set_cb_adapter_added(neardal_t neardalObj,
  * 'NEARDAL adapter added'.
  * cb_adp_removed = NULL to remove actual callback.
  *****************************************************************************/
-errorCode_t neardal_set_cb_adapter_removed(neardal_t neardalObj,
+errorCode_t neardal_set_cb_adapter_removed(neardal_t neardalMgr,
                                           adapter_cb cb_adp_removed,
                                           void *user_data)
 {
        errorCode_t err = NEARDAL_ERROR_INVALID_PARAMETER;
 
-       if (neardalObj != NULL) {
-               neardalObj->cb_adp_removed      = cb_adp_removed;
-               neardalObj->cb_adp_removed_ud   = user_data;
+       if (neardalMgr != NULL) {
+               neardalMgr->cb_adp_removed      = cb_adp_removed;
+               neardalMgr->cb_adp_removed_ud   = user_data;
                err                             = NEARDAL_SUCCESS;
        }
 
@@ -79,15 +77,15 @@ errorCode_t neardal_set_cb_adapter_removed(neardal_t neardalObj,
  * 'NEARDAL Adapter Property Change'.
  * cb_mgr_adp_property_changed = NULL to remove actual callback.
  *****************************************************************************/
-errorCode_t neardal_set_cb_adapter_property_changed(neardal_t neardalObj,
+errorCode_t neardal_set_cb_adapter_property_changed(neardal_t neardalMgr,
                                        adapter_prop_cb cb_adp_property_changed,
                                        void *user_data)
 {
        errorCode_t err = NEARDAL_ERROR_INVALID_PARAMETER;
 
-       if (neardalObj != NULL) {
-               neardalObj->cb_adp_prop_changed = cb_adp_property_changed;
-               neardalObj->cb_adp_prop_changed_ud      = user_data;
+       if (neardalMgr != NULL) {
+               neardalMgr->cb_adp_prop_changed = cb_adp_property_changed;
+               neardalMgr->cb_adp_prop_changed_ud      = user_data;
                err                                     = NEARDAL_SUCCESS;
        }
 
@@ -99,15 +97,15 @@ errorCode_t neardal_set_cb_adapter_property_changed(neardal_t neardalObj,
  * 'NEARDAL adapter added'.
  * cb_adp_added = NULL to remove actual callback.
  *****************************************************************************/
-errorCode_t neardal_set_cb_target_found(neardal_t neardalObj,
+errorCode_t neardal_set_cb_target_found(neardal_t neardalMgr,
                                        target_cb cb_tgt_found,
                                        void *user_data)
 {
        errorCode_t err = NEARDAL_ERROR_INVALID_PARAMETER;
 
-       if (neardalObj != NULL) {
-               neardalObj->cb_tgt_found        = cb_tgt_found;
-               neardalObj->cb_tgt_found_ud     = user_data;
+       if (neardalMgr != NULL) {
+               neardalMgr->cb_tgt_found        = cb_tgt_found;
+               neardalMgr->cb_tgt_found_ud     = user_data;
                err                             = NEARDAL_SUCCESS;
        }
 
@@ -119,14 +117,14 @@ errorCode_t neardal_set_cb_target_found(neardal_t neardalObj,
  * 'NEARDAL adapter added'.
  * cb_adp_removed = NULL to remove actual callback.
  *****************************************************************************/
-errorCode_t neardal_set_cb_target_lost(neardal_t neardalObj,
+errorCode_t neardal_set_cb_target_lost(neardal_t neardalMgr,
                                       target_cb cb_tgt_lost, void *user_data)
 {
        errorCode_t err = NEARDAL_ERROR_INVALID_PARAMETER;
 
-       if (neardalObj != NULL) {
-               neardalObj->cb_tgt_lost         = cb_tgt_lost;
-               neardalObj->cb_tgt_lost_ud      = user_data;
+       if (neardalMgr != NULL) {
+               neardalMgr->cb_tgt_lost         = cb_tgt_lost;
+               neardalMgr->cb_tgt_lost_ud      = user_data;
                err                             = NEARDAL_SUCCESS;
        }
 
@@ -139,15 +137,15 @@ errorCode_t neardal_set_cb_target_lost(neardal_t neardalObj,
  * 'NEARDAL target record found'.
  * cb_rcd_found = NULL to remove actual callback.
  *****************************************************************************/
-errorCode_t neardal_set_cb_record_found(neardal_t neardalObj,
+errorCode_t neardal_set_cb_record_found(neardal_t neardalMgr,
                                        record_cb cb_rcd_found,
                                        void *user_data)
 {
        errorCode_t err = NEARDAL_ERROR_INVALID_PARAMETER;
 
-       if (neardalObj != NULL) {
-               neardalObj->cb_rcd_found        = cb_rcd_found;
-               neardalObj->cb_rcd_found_ud     = user_data;
+       if (neardalMgr != NULL) {
+               neardalMgr->cb_rcd_found        = cb_rcd_found;
+               neardalMgr->cb_rcd_found_ud     = user_data;
                err                             = NEARDAL_SUCCESS;
        }
 
@@ -180,36 +178,36 @@ errorCode_t neardal_free_array(char ***array)
 /******************************************************************************
  * neardal_start_poll: Request Neard to start polling
  *****************************************************************************/
-void neardal_start_poll(neardal_t neardalObj, char *adpName, errorCode_t *ec)
+void neardal_start_poll(neardal_t neardalMgr, char *adpName, errorCode_t *ec)
 {
        errorCode_t     err             = NEARDAL_ERROR_INVALID_PARAMETER;
        AdpProp         *adpProp        = NULL;
 
-       if (neardalObj == NULL)
+       if (neardalMgr == NULL)
                goto exit;
 
-       err = neardal_mgr_prv_get_adapter(neardalObj, adpName,
+       err = neardal_mgr_prv_get_adapter(neardalMgr, adpName,
                                          &adpProp);
 
        err = NEARDAL_ERROR_NO_ADAPTER;
        if (adpProp == NULL)
                goto exit;
 
-       if (adpProp->dbusProxy == NULL)
+       if (adpProp->proxy == NULL)
                goto exit;
 
        if (!adpProp->polling) {
-               org_neard_Adapter_start_poll(adpProp->dbusProxy,
-                                            &neardalObj->gerror);
+               org_neard_adp__call_start_poll_sync(adpProp->proxy, NULL, 
+                                               &neardalMgr->gerror);
 
                err = NEARDAL_SUCCESS;
-               if (neardalObj->gerror != NULL) {
+               if (neardalMgr->gerror != NULL) {
                        NEARDAL_TRACE_ERR(
                                "Error with neard dbus method (err:%d:'%s')\n"
-                                       , neardalObj->gerror->code
-                                       , neardalObj->gerror->message);
+                                       , neardalMgr->gerror->code
+                                       , neardalMgr->gerror->message);
                        err = NEARDAL_ERROR_DBUS_INVOKE_METHOD_ERROR;
-                       neardal_tools_prv_free_gerror(neardalObj);
+                       neardal_tools_prv_free_gerror(neardalMgr);
                }
        } else
                err = NEARDAL_ERROR_POLLING_ALREADY_ACTIVE;
@@ -222,35 +220,35 @@ exit:
 /******************************************************************************
  * neardal_stop_poll: Request Neard to stop polling
  *****************************************************************************/
-void neardal_stop_poll(neardal_t neardalObj, char *adpName, errorCode_t *ec)
+void neardal_stop_poll(neardal_t neardalMgr, char *adpName, errorCode_t *ec)
 {
        errorCode_t     err = NEARDAL_ERROR_INVALID_PARAMETER;
        AdpProp         *adpProp        = NULL;
 
-       if (neardalObj == NULL)
+       if (neardalMgr == NULL)
                goto exit;
 
-       err = neardal_mgr_prv_get_adapter(neardalObj, adpName,
+       err = neardal_mgr_prv_get_adapter(neardalMgr, adpName,
                                                   &adpProp);
 
        if (adpProp == NULL)
                goto exit;
 
-       if (adpProp->dbusProxy == NULL)
+       if (adpProp->proxy == NULL)
                goto exit;
 
        if (adpProp->polling) {
-               org_neard_Adapter_stop_poll(adpProp->dbusProxy,
-                                           &neardalObj->gerror);
+               org_neard_adp__call_stop_poll_sync(adpProp->proxy, NULL,
+                                                  &neardalMgr->gerror);
 
                err = NEARDAL_SUCCESS;
-               if (neardalObj->gerror != NULL) {
+               if (neardalMgr->gerror != NULL) {
                        NEARDAL_TRACE_ERR(
                                "Error with neard dbus method (err:%d:'%s')\n"
-                                       , neardalObj->gerror->code
-                                       , neardalObj->gerror->message);
+                                       , neardalMgr->gerror->code
+                                       , neardalMgr->gerror->message);
                        err = NEARDAL_ERROR_DBUS_INVOKE_METHOD_ERROR;
-                       neardal_tools_prv_free_gerror(neardalObj);
+                       neardal_tools_prv_free_gerror(neardalMgr);
                }
        }
 
@@ -262,16 +260,16 @@ exit:
 /******************************************************************************
  * neardal_publish: Write NDEF record to an NFC tag
  *****************************************************************************/
-errorCode_t neardal_publish(neardal_t neardalObj, neardal_record *record)
+errorCode_t neardal_publish(neardal_t neardalMgr, neardal_record *record)
 {
        errorCode_t     err     = NEARDAL_ERROR_INVALID_PARAMETER;
        AdpProp         *adpProp;
        RcdProp         rcd;
 
-       if (neardalObj == NULL || record == NULL)
+       if (neardalMgr == NULL || record == NULL)
                goto exit;
 
-       err = neardal_mgr_prv_get_adapter(neardalObj, record->name,
+       err = neardal_mgr_prv_get_adapter(neardalMgr, record->name,
                                                   &adpProp);
        if (err != NEARDAL_SUCCESS)
                goto exit;
@@ -294,7 +292,7 @@ exit:
 /******************************************************************************
  * neardal_get_adapter_properties: Get properties of a specific NEARDAL adapter
  *****************************************************************************/
-errorCode_t neardal_get_adapter_properties(neardal_t neardalObj,
+errorCode_t neardal_get_adapter_properties(neardal_t neardalMgr,
                                           const char *adpName,
                                           neardal_adapter *adapter)
 {
@@ -304,10 +302,10 @@ errorCode_t neardal_get_adapter_properties(neardal_t neardalObj,
        int             ct              = 0;    /* counter */
        gsize           size;
 
-       if (neardalObj == NULL || adpName == NULL || adapter == NULL)
+       if (neardalMgr == NULL || adpName == NULL || adapter == NULL)
                goto exit;
 
-       err = neardal_mgr_prv_get_adapter(neardalObj, adpName,
+       err = neardal_mgr_prv_get_adapter(neardalMgr, adpName,
                                          &adpProp);
        if (err != NEARDAL_SUCCESS)
                goto exit;
@@ -316,14 +314,11 @@ errorCode_t neardal_get_adapter_properties(neardal_t neardalObj,
        adapter->polling        = (short) adpProp->polling;
        adapter->powered        = (short) adpProp->powered;
 
-       adapter->nbProtocols    = 0;
+       adapter->nbProtocols    = adpProp->lenProtocols;
        adapter->protocols      = NULL;
 
-       /* Count protocols */
-       while (adpProp->protocols[adapter->nbProtocols++] != NULL);
 
        if (adapter->nbProtocols > 0) {
-               adapter->nbProtocols--;
                err = NEARDAL_ERROR_NO_MEMORY;
                size = (adapter->nbProtocols + 1) * sizeof(char *);
                adapter->protocols = g_try_malloc0(size);
@@ -331,14 +326,13 @@ errorCode_t neardal_get_adapter_properties(neardal_t neardalObj,
                        ct = 0;
                        while (ct < adapter->nbProtocols) {
                                gchar *tmp = g_strdup(adpProp->protocols[ct]);
-                               adapter->protocols[ct] = tmp;
-                               ct++;
+                               adapter->protocols[ct++] = tmp;
                        }
                        err = NEARDAL_SUCCESS;
                }
        }
 
-       adapter->nbTargets      = g_list_length(adpProp->tgtList);
+       adapter->nbTargets      = adpProp->tgtNb;
        adapter->targets        = NULL;
        if (adapter->nbTargets <= 0)
                goto exit;
@@ -364,7 +358,7 @@ exit:
 /******************************************************************************
  * neardal_get_adapter_properties: Get properties of a specific NEARDAL adapter
  *****************************************************************************/
-errorCode_t neardal_get_target_properties(neardal_t neardalObj,
+errorCode_t neardal_get_target_properties(neardal_t neardalMgr,
                                          const char *tgtName,
                                          neardal_target *target)
 {
@@ -375,12 +369,12 @@ errorCode_t neardal_get_target_properties(neardal_t neardalObj,
        RcdProp         *record         = NULL;
        gsize           size;
 
-       if (neardalObj == NULL || tgtName == NULL || target == NULL)
+       if (neardalMgr == NULL || tgtName == NULL || target == NULL)
                goto exit;
 
        target->records = NULL;
-       target->tagType = NULL;
-       err = neardal_mgr_prv_get_adapter(neardalObj, tgtName,
+       target->tagsType        = NULL;
+       err = neardal_mgr_prv_get_adapter(neardalMgr, tgtName,
                                                   &adpProp);
        if (err != NEARDAL_SUCCESS)
                goto exit;
@@ -392,7 +386,7 @@ errorCode_t neardal_get_target_properties(neardal_t neardalObj,
        target->name            = tgtProp->name;
        target->type            = tgtProp->type;
        target->readOnly        = tgtProp->readOnly;
-       target->nbRecords       = g_list_length(tgtProp->rcdList);
+       target->nbRecords       = tgtProp->rcdLen;
        if (target->nbRecords > 0) {
                err = NEARDAL_ERROR_NO_MEMORY;
                size = (target->nbRecords + 1) * sizeof(char *);
@@ -410,23 +404,22 @@ errorCode_t neardal_get_target_properties(neardal_t neardalObj,
        }
 
        target->nbTagTypes = 0;
-       target->tagType = NULL;
+       target->tagsType = NULL;
        /* Count TagTypes */
-       while (tgtProp->tagType[target->nbTagTypes++] != NULL);
+       target->nbTagTypes = tgtProp->tagsTypeLen;
 
        if (target->nbTagTypes <= 0)
                goto exit;
 
-       target->nbTagTypes--;
        err = NEARDAL_ERROR_NO_MEMORY;
        size = (target->nbTagTypes + 1) * sizeof(char *);
-       target->tagType = g_try_malloc0(size);
-       if (target->tagType == NULL)
+       target->tagsType = g_try_malloc0(size);
+       if (target->tagsType == NULL)
                goto exit;
 
        ct = 0;
        while (ct < target->nbTagTypes) {
-               target->tagType[ct] = g_strdup(tgtProp->tagType[ct]);
+               target->tagsType[ct] = g_strdup(tgtProp->tagsType[ct]);
                ct++;
        }
        err = NEARDAL_SUCCESS;
@@ -438,7 +431,7 @@ exit:
  /******************************************************************************
  * neardal_get_record_properties: Get values of a specific target record
   *****************************************************************************/
-errorCode_t neardal_get_record_properties(neardal_t neardalObj,
+errorCode_t neardal_get_record_properties(neardal_t neardalMgr,
                                          const char *recordName,
                                          neardal_record *record)
 {
@@ -447,10 +440,10 @@ errorCode_t neardal_get_record_properties(neardal_t neardalObj,
        TgtProp         *tgtProp        = NULL;
        RcdProp         *rcdProp        = NULL;
 
-       if (neardalObj == NULL || recordName == NULL || record == NULL)
+       if (neardalMgr == NULL || recordName == NULL || record == NULL)
                goto exit;
 
-       err = neardal_mgr_prv_get_adapter(neardalObj, recordName,
+       err = neardal_mgr_prv_get_adapter(neardalMgr, recordName,
                                                   &adpProp);
        if (err != NEARDAL_SUCCESS)
                goto exit;
@@ -488,41 +481,41 @@ exit:
  *****************************************************************************/
 neardal_t neardal_construct(errorCode_t *ec)
 {
-       neardal_t       neardalObj      = NULL;
+       neardal_t       neardalMgr      = NULL;
        errorCode_t     err     = NEARDAL_ERROR_NO_MEMORY;
 
        NEARDAL_TRACEIN();
        /* Allocate NEARDAL context */
-       neardalObj = g_try_malloc0(sizeof(neardalCtx));
-       if (neardalObj == NULL)
+       neardalMgr = g_try_malloc0(sizeof(neardalCtx));
+       if (neardalMgr == NULL)
                goto exit;
 
        /* Create DBUS connection */
        g_type_init();
-       neardalObj->conn = dbus_g_bus_get(DBUS_BUS_SYSTEM,
-                                          &neardalObj->gerror);
-       if (neardalObj->conn != NULL) {
+       neardalMgr->conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL,
+                                          &neardalMgr->gerror);
+       if (neardalMgr->conn != NULL) {
                /* We have a DBUS connection, create proxy on Neard Manager */
-               err =  neardal_mgr_init(neardalObj);
+               err =  neardal_mgr_create(neardalMgr);
                if (err != NEARDAL_SUCCESS) {
                        NEARDAL_TRACEF(
-                               "neardal_mgr_init() exit (err %d: %s)\n",
+                               "neardal_mgr_create() exit (err %d: %s)\n",
                                err, neardal_error_get_text(err));
 
                        /* No Neard daemon, destroying neardal object... */
                        if (err == NEARDAL_ERROR_DBUS_CANNOT_CREATE_PROXY) {
-                               neardal_tools_prv_free_gerror(neardalObj);
-                               g_free(neardalObj);
-                               neardalObj = NULL;
+                               neardal_tools_prv_free_gerror(neardalMgr);
+                               g_free(neardalMgr);
+                               neardalMgr = NULL;
                        }
                }
        } else {
                NEARDAL_TRACE_ERR("Unable to connect to dbus: %s\n",
-                                neardalObj->gerror->message);
-               neardal_tools_prv_free_gerror(neardalObj);
+                                neardalMgr->gerror->message);
+               neardal_tools_prv_free_gerror(neardalMgr);
                err = NEARDAL_ERROR_DBUS;
-               g_free(neardalObj);
-               neardalObj = NULL;
+               g_free(neardalMgr);
+               neardalMgr = NULL;
        }
 
 exit:
@@ -530,7 +523,7 @@ exit:
                *ec = err;
 
        NEARDAL_TRACEF("Exit\n");
-       return neardalObj;
+       return neardalMgr;
 }
 
 
@@ -538,12 +531,11 @@ exit:
  * neardal_destroy: destroy NEARDAL object instance, Disconnect Neard Dbus
  * connection, unregister Neard's events
  *****************************************************************************/
-void neardal_destroy(neardal_t neardalObj)
+void neardal_destroy(neardal_t neardalMgr)
 {
        NEARDAL_TRACEIN();
-       if (neardalObj != NULL) {
-               neardal_mgr_release(neardalObj);
-               neardal_tools_prv_free_gerror(neardalObj);
-               g_free(neardalObj);
+       if (neardalMgr != NULL) {
+               neardal_tools_prv_free_gerror(neardalMgr);
+               neardal_mgr_destroy(&neardalMgr);
        }
 }
index 7187152..6a12724 100644 (file)
@@ -82,7 +82,7 @@ typedef struct {
 /*! @brief Number of supported 'types' in target */
        int             nbTagTypes;
 /*! @brief types list (use @link neardal_free_array @endlink(& ) to free) */
-       char            **tagType;
+       char            **tagsType;
 /*! @brief target type */
        const char      *type;
 /*! @brief Read-Only flag (is target writable?) */
@@ -180,50 +180,50 @@ typedef void (*record_cb) (const char *rcdName, void *user_data);
 neardal_t neardal_construct(errorCode_t *ec);
 
 
-/*! \fn void neardal_destroy(neardal_t neardalObj)
+/*! \fn void neardal_destroy(neardal_t neardalMgr)
 *  \brief destroy NEARDAL object instance, disconnect Neard Dbus connection,
 * unregister Neard's events
-*  \param neardalObj : NEARDAL context to destroy
+*  \param neardalMgr : NEARDAL context to destroy
 */
-void neardal_destroy(neardal_t neardalObj);
+void neardal_destroy(neardal_t neardalMgr);
 
-/*! \fn void neardal_start_poll(neardal_t neardalObj, char *adpName,
+/*! \fn void neardal_start_poll(neardal_t neardalMgr, char *adpName,
  * errorCode_t *ec)
 *  \brief Request Neard to start polling on specific NEARDAL adapter
-*  \param neardalObj : NEARDAL context
+*  \param neardalMgr : NEARDAL context
 *  \param adpName : DBus interface adapter name (as identifier)
 *  \param ec : optional, pointer to store error code
 */
-void neardal_start_poll(neardal_t neardalObj, char *adpName,
+void neardal_start_poll(neardal_t neardalMgr, char *adpName,
                         errorCode_t *ec);
 
-/*! \fn void neardal_stop_poll(neardal_t neardalObj, char *adpName,
+/*! \fn void neardal_stop_poll(neardal_t neardalMgr, char *adpName,
  * errorCode_t *ec)
 *  \brief Request Neard to stop polling on specific NEARDAL adapter
-*  \param neardalObj : NEARDAL context
+*  \param neardalMgr : NEARDAL context
 *  \param adpName : DBus interface adapter name (as identifier)
 *  \param ec : optional, pointer to store error code
 */
-void neardal_stop_poll(neardal_t neardalObj, char *adpName, errorCode_t *ec);
+void neardal_stop_poll(neardal_t neardalMgr, char *adpName, errorCode_t *ec);
 
-/*! \fn errorCode_t neardal_get_adapters(neardal_t neardalObj, char ***array,
+/*! \fn errorCode_t neardal_get_adapters(neardal_t neardalMgr, char ***array,
  * int *len)
  * @brief get an array of NEARDAL adapters present
  *
- * @param neardalObj NEARDAL context
+ * @param neardalMgr NEARDAL context
  * @param array array of DBus interface adapter name (as identifier), use @link
  * neardal_free_array @endlink(& ) to free
  * @param len (optional), number of adapters
  * @return errorCode_t error code
  **/
-errorCode_t neardal_get_adapters(neardal_t neardalObj, char ***array,
+errorCode_t neardal_get_adapters(neardal_t neardalMgr, char ***array,
                                  int *len);
 
-/*! \fn errorCode_t neardal_get_targets(neardal_t neardalObj, char *adpName,
+/*! \fn errorCode_t neardal_get_targets(neardal_t neardalMgr, char *adpName,
  *                                  char ***array, int *len)
  * @brief get an array of NEARDAL targets present
  *
- * @param neardalObj NEARDAL context
+ * @param neardalMgr NEARDAL context
  * @param adpName adapter name (identifier) on which targets list must be
  * retrieve
  * @param array array of DBus interface target name (as identifier), use @link
@@ -231,14 +231,14 @@ errorCode_t neardal_get_adapters(neardal_t neardalObj, char ***array,
  * @param len (optional), number of targets
  * @return errorCode_t error code
  **/
-errorCode_t neardal_get_targets(neardal_t neardalObj, char *adpName,
+errorCode_t neardal_get_targets(neardal_t neardalMgr, char *adpName,
                                 char ***array, int *len);
 
-/*! \fn errorCode_t neardal_get_records(neardal_t neardalObj, char *tgtName,
+/*! \fn errorCode_t neardal_get_records(neardal_t neardalMgr, char *tgtName,
  *                                  char ***array, int *len)
  * @brief get an array of NEARDAL records present
  *
- * @param neardalObj NEARDAL context
+ * @param neardalMgr NEARDAL context
  * @param tgtName target name (identifier) on which records list must be
  * retrieve
  * @param array array of DBus interface record name (as identifier), use @link
@@ -246,7 +246,7 @@ errorCode_t neardal_get_targets(neardal_t neardalObj, char *adpName,
  * @param len (optional), number of records
  * @return errorCode_t error code
  **/
-errorCode_t neardal_get_records(neardal_t neardalObj, char *tgtName,
+errorCode_t neardal_get_records(neardal_t neardalMgr, char *tgtName,
                                 char ***array, int *len);
 
 /*! @fn errorCode_t neardal_free_array(char ***array)
@@ -259,142 +259,142 @@ errorCode_t neardal_get_records(neardal_t neardalObj, char *tgtName,
  **/
 errorCode_t neardal_free_array(char ***array);
 
-/*! \fn errorCode_t neardal_get_adapter_properties(neardal_t neardalObj,
+/*! \fn errorCode_t neardal_get_adapter_properties(neardal_t neardalMgr,
  * const char* adpName, neardal_adapter *adapter)
  * @brief Get properties of a specific NEARDAL adapter
  *
- * @param neardalObj NEARDAL context
+ * @param neardalMgr NEARDAL context
  * @param adpName DBus interface adapter name (as identifier)
  * @param adapter Pointer on client adapter struct to store datas
  * @return errorCode_t error code
  **/
-errorCode_t neardal_get_adapter_properties(neardal_t neardalObj,
+errorCode_t neardal_get_adapter_properties(neardal_t neardalMgr,
                                            const char *adpName,
                                            neardal_adapter *adapter);
 
-/*! \fn errorCode_t neardal_set_cb_adapter_added(neardal_t neardalObj,
+/*! \fn errorCode_t neardal_set_cb_adapter_added(neardal_t neardalMgr,
  *                                          adapter_cb cb_adp_added,
  *                                          void * user_data)
  * @brief setup a client callback for 'NEARDAL adapter added'. cb_adp_added = NULL
  * to remove actual callback
  *
- * @param neardalObj NEARDAL context
+ * @param neardalMgr NEARDAL context
  * @param cb_adp_added Client callback 'adapter added'
  * @param user_data Client user data
  * @return errorCode_t error code
  **/
-errorCode_t neardal_set_cb_adapter_added(neardal_t neardalObj,
+errorCode_t neardal_set_cb_adapter_added(neardal_t neardalMgr,
                                          adapter_cb cb_adp_added,
                                          void *user_data);
 
-/*! \fn errorCode_t neardal_set_cb_adapter_removed(neardal_t neardalObj,
+/*! \fn errorCode_t neardal_set_cb_adapter_removed(neardal_t neardalMgr,
  *                                            adapter_cb cb_adp_removed,
  *                                            void * user_data)
  * @brief setup a client callback for 'NEARDAL adapter removed'.
  * cb_adp_removed = NULL to remove actual callback
  *
- * @param neardalObj NEARDAL context
+ * @param neardalMgr NEARDAL context
  * @param cb_adp_removed Client callback 'adapter removed'
  * @param user_data Client user data
  * @return errorCode_t error code
  **/
-errorCode_t neardal_set_cb_adapter_removed(neardal_t neardalObj,
+errorCode_t neardal_set_cb_adapter_removed(neardal_t neardalMgr,
                                            adapter_cb cb_adp_removed,
                                            void *user_data);
 
 /*! \fn errorCode_t neardal_set_cb_adapter_property_changed(
- * neardal_t neardalObj, adapter_prop_cb cb_adp_property_changed,
+ * neardal_t neardalMgr, adapter_prop_cb cb_adp_property_changed,
  * void *user_data)
  * @brief setup a client callback for 'NEARDAL Adapter Property Changed'.
  * cb_adp_property_changed = NULL to remove actual callback.
  *
- * @param neardalObj NEARDAL context
+ * @param neardalMgr NEARDAL context
  * @param cb_adp_property_changed Client callback 'Adapter Property Changed'
  * @param user_data Client user data
  * @return errorCode_t error code
  **/
-errorCode_t neardal_set_cb_adapter_property_changed(neardal_t neardalObj,
+errorCode_t neardal_set_cb_adapter_property_changed(neardal_t neardalMgr,
                                        adapter_prop_cb cb_adp_property_changed,
                                                void *user_data);
 
-/*! \fn errorCode_t neardal_get_target_properties(neardal_t neardalObj,
+/*! \fn errorCode_t neardal_get_target_properties(neardal_t neardalMgr,
  * const char* tgtName, neardal_target *target)
  * @brief Get properties of a specific NEARDAL target
  *
- * @param neardalObj NEARDAL context
+ * @param neardalMgr NEARDAL context
  * @param tgtName target name (identifier) on which properties must be retrieve
  * @param target Pointer on client target struct to store datas
  * @return errorCode_t error code
  **/
-errorCode_t neardal_get_target_properties(neardal_t neardalObj,
+errorCode_t neardal_get_target_properties(neardal_t neardalMgr,
                                           const char *tgtName,
                                           neardal_target *target);
 
-/*! \fn errorCode_t neardal_set_cb_target_found(neardal_t neardalObj,
+/*! \fn errorCode_t neardal_set_cb_target_found(neardal_t neardalMgr,
  * target_cb cb_tgt_found, void * user_data)
  * @brief setup a client callback for 'NEARDAL target found'.
  * cb_tgt_found = NULL to remove actual callback.
  *
- * @param neardalObj NEARDAL context
+ * @param neardalMgr NEARDAL context
  * @param cb_tgt_found Client callback 'target found'
  * @param user_data Client user data
  * @return errorCode_t error code
  **/
-errorCode_t neardal_set_cb_target_found(neardal_t neardalObj,
+errorCode_t neardal_set_cb_target_found(neardal_t neardalMgr,
                                         target_cb cb_tgt_found,
                                         void *user_data);
 
-/*! \fn errorCode_t neardal_set_cb_target_lost(neardal_t neardalObj,
+/*! \fn errorCode_t neardal_set_cb_target_lost(neardal_t neardalMgr,
  * target_cb cb_tgt_lost, void * user_data)
  * @brief setup a client callback for 'NEARDAL target lost'.
  * cb_tgt_lost = NULL to remove actual callback.
  *
- * @param neardalObj NEARDAL context
+ * @param neardalMgr NEARDAL context
  * @param cb_tgt_lost Client callback 'target lost'
  * @param user_data Client user data
  * @return errorCode_t error code
  **/
-errorCode_t neardal_set_cb_target_lost(neardal_t neardalObj,
+errorCode_t neardal_set_cb_target_lost(neardal_t neardalMgr,
                                        target_cb cb_tgt_lost,
                                        void *user_data);
 
 
-/*! \fn errorCode_t neardal_get_record_properties(neardal_t neardalObj,
+/*! \fn errorCode_t neardal_get_record_properties(neardal_t neardalMgr,
  *                                           const char *recordName,
  *                                           neardal_record *record)
  * @brief Get properties of a specific NEARDAL target record
  *
- * @param neardalObj NEARDAL context
+ * @param neardalMgr NEARDAL context
  * @param recordName DBus interface record name (as identifier)
  * @param record Pointer on client record struct to store datas
  * @return errorCode_t error code
  **/
-errorCode_t neardal_get_record_properties(neardal_t neardalObj,
+errorCode_t neardal_get_record_properties(neardal_t neardalMgr,
                                           const char *recordName,
                                           neardal_record *record);
 
-/*! \fn errorCode_t neardal_publish(neardal_t neardalObj,
+/*! \fn errorCode_t neardal_publish(neardal_t neardalMgr,
  * neardal_record *record)
  * @brief Write NDEF record to an NFC tag
  *
- * @param neardalObj NEARDAL context
+ * @param neardalMgr NEARDAL context
  * @param record Pointer on client record used to create NDEF record
  * @return errorCode_t error code
  **/
-errorCode_t neardal_publish(neardal_t neardalObj, neardal_record *record);
+errorCode_t neardal_publish(neardal_t neardalMgr, neardal_record *record);
 
 
-/*! \fn errorCode_t neardal_set_cb_record_found(neardal_t neardalObj,
+/*! \fn errorCode_t neardal_set_cb_record_found(neardal_t neardalMgr,
  * record_cb cb_rcd_found, void * user_data)
  * @brief Setup a client callback for 'NEARDAL target record found'.
  * cb_rcd_found = NULL to remove actual callback
  *
- * @param neardalObj NEARDAL context
+ * @param neardalMgr NEARDAL context
  * @param cb_rcd_found Client callback 'record found'
  * @param user_data Client user data
  * @return errorCode_t error code
  **/
-errorCode_t neardal_set_cb_record_found(neardal_t neardalObj,
+errorCode_t neardal_set_cb_record_found(neardal_t neardalMgr,
                                         record_cb cb_rcd_found,
                                         void *user_data);
 
index 55af121..649715e 100644 (file)
 #include <stdio.h>
 #include <string.h>
 #include <glib.h>
-#include <dbus/dbus-glib.h>
 #include <glib-object.h>
-#include "dbus/dbus.h"
 
-#include "neard-adapter-proxy.h"
+#include "neard_adapter_proxy.h"
 
 #include "neardal.h"
 #include "neardal_prv.h"
  * neardal_adp_prv_cb_target_found: Callback called when a NFC target is
  * found
  *****************************************************************************/
-static void  neardal_adp_prv_cb_target_found(DBusGProxy  *proxy,
-                                            const char *str0,
+static void  neardal_adp_prv_cb_target_found(orgNeardTgt *proxy,
+                                            const gchar *arg_unnamed_arg0,
                                             void        *user_data)
 {
-       neardal_t       neardalObj      = user_data;
-       AdpProp         *adpProp        = NULL;
+       AdpProp         *adpProp        = user_data;
        errorCode_t     err;
+       neardal_t       neardalMgr;
 
        NEARDAL_TRACEIN();
-       g_assert(str0 != NULL);
        (void) proxy; /* remove warning */
+       
+       g_assert(arg_unnamed_arg0 != NULL);
+       g_assert(adpProp != NULL);
+       neardalMgr = adpProp->parent;
+       g_assert(neardalMgr != NULL);
+       
 
-       neardal_mgr_prv_get_adapter(neardalObj, (char *) str0, &adpProp);
-
-       NEARDAL_TRACEF("Adding target '%s'\n", str0);
+       NEARDAL_TRACEF("Adding target '%s'\n", arg_unnamed_arg0);
        /* Invoking Callback 'Target Found' before adding it (otherwise
         * callback 'Record Found' would be called before ) */
-       err = neardal_tgt_add(neardalObj, (char *) str0);
+       err = neardal_tgt_add(neardalMgr, adpProp,
+                             (char *) arg_unnamed_arg0);
        if (err != NEARDAL_SUCCESS) {
-               if (neardalObj->cb_tgt_found != NULL)
-                       (neardalObj->cb_tgt_found)((char *) str0,
-                                             neardalObj->cb_tgt_found_ud);
+               if (neardalMgr->cb_tgt_found != NULL)
+                       (neardalMgr->cb_tgt_found)((char *) arg_unnamed_arg0,
+                                             neardalMgr->cb_tgt_found_ud);
        }
        NEARDAL_TRACEF("NEARDAL LIB targetList contains %d elements\n",
                      g_list_length(adpProp->tgtList));
@@ -68,34 +70,33 @@ static void  neardal_adp_prv_cb_target_found(DBusGProxy  *proxy,
  * neardal_adp_prv_cb_target_lost: Callback called when a NFC target is
  * lost (removed)
  *****************************************************************************/
-static void neardal_adp_prv_cb_target_lost(DBusGProxy  *proxy,
-                                               const char *str0,
-                                               void *user_data)
+static void neardal_adp_prv_cb_target_lost(orgNeardTgt *proxy,
+                                          const gchar *arg_unnamed_arg0,
+                                          void *user_data)
 {
-       neardal_t       neardalObj      = user_data;
-       AdpProp         *adpProp        = NULL;
+       AdpProp         *adpProp        = user_data;
+       neardal_t       neardalMgr      = adpProp->parent;
        TgtProp         *tgtProp        = NULL;
        errorCode_t     errCode;
 
        NEARDAL_TRACEIN();
-       g_assert(neardalObj != NULL);
-       g_assert(str0 != NULL);
+       g_assert(neardalMgr != NULL);
+       g_assert(arg_unnamed_arg0 != NULL);
        (void) proxy; /* remove warning */
 
-       neardal_mgr_prv_get_adapter(neardalObj, (char *) str0, &adpProp);
+       neardal_mgr_prv_get_adapter(neardalMgr, (char *) arg_unnamed_arg0,
+                                   &adpProp);
 
-       NEARDAL_TRACEF("Removing target '%s'\n", str0);
+       NEARDAL_TRACEF("Removing target '%s'\n", arg_unnamed_arg0);
        /* Invoking Callback 'Target Found' before adding it (otherwise
         * callback 'Record Found' would be called before ) */
-       errCode = neardal_mgr_prv_get_target(adpProp, (char *) str0,
+       errCode = neardal_mgr_prv_get_target(adpProp, (char *) arg_unnamed_arg0,
                                                  &tgtProp);
        if (errCode == NEARDAL_SUCCESS) {
-               if (neardalObj->cb_tgt_lost != NULL)
-                       (neardalObj->cb_tgt_lost)((char *) str0,
-                                             neardalObj->cb_tgt_lost_ud);
+               if (neardalMgr->cb_tgt_lost != NULL)
+                       (neardalMgr->cb_tgt_lost)((char *) arg_unnamed_arg0,
+                                             neardalMgr->cb_tgt_lost_ud);
                neardal_tgt_remove(tgtProp);
-               adpProp->tgtList = g_list_remove(adpProp->tgtList,
-                                                    (gconstpointer) tgtProp);
                NEARDAL_TRACEF("NEARDAL LIB targetList contains %d elements\n",
                              g_list_length(adpProp->tgtList));
        }
@@ -105,113 +106,96 @@ static void neardal_adp_prv_cb_target_lost(DBusGProxy  *proxy,
  * neardal_adp_prv_cb_property_changed: Callback called when a NFC target
  * is found
  *****************************************************************************/
-static void neardal_adp_prv_cb_property_changed(DBusGProxy *proxy,
-                                               const char *str0,
-                                               GValue      *gvalue,
+static void neardal_adp_prv_cb_property_changed(orgNeardAdp *proxy,
+                                               const gchar *arg_unnamed_arg0,
+                                               GVariant *arg_unnamed_arg1,
                                                void        *user_data)
 {
-       neardal_t               neardalObj              = user_data;
-       AdpProp         *adpProp        = user_data;
-       GPtrArray       *pathsGpa       = NULL;
+       neardal_t       neardalMgr      = user_data;
+       AdpProp         *adpProp        = NULL;
        errorCode_t     errCode         = NEARDAL_ERROR_NO_TARGET;
        char            *tgtName        = NULL;
        void            *clientValue    = NULL;
        TgtProp         *tgtProp        = NULL;
+       GVariant        *tmp            = NULL;
+       gchar           **tgtArray      = NULL;
 
+       (void) proxy; /* remove warning */
        NEARDAL_TRACEIN();
-       g_assert(neardalObj != NULL);
-       g_assert(str0 != NULL);
+       g_assert(arg_unnamed_arg0 != NULL);
 
-       NEARDAL_TRACEF("str0='%s'\n", str0);
-       errCode = neardal_mgr_prv_get_adapter_from_proxy(neardalObj,
-                                                             proxy, &adpProp);
-       if (errCode != NEARDAL_SUCCESS)
-               goto error;
-
-       if (!strcmp(str0, "Polling")) {
-               adpProp->polling =  g_value_get_boolean(gvalue);
+       neardal_mgr_prv_get_adapter_from_proxy(neardalMgr, proxy, &adpProp);
+       if (adpProp == NULL) {
+               errCode = NEARDAL_ERROR_GENERAL_ERROR;
+               goto exit;
+       }
+       
+       tmp = g_variant_get_variant(arg_unnamed_arg1);
+       if (tmp == NULL) {
+               errCode = NEARDAL_ERROR_GENERAL_ERROR;
+               goto exit;
+       }
+       
+       if (!strcmp(arg_unnamed_arg0, "Polling")) {
+               adpProp->polling = g_variant_get_boolean  (tmp);                
                clientValue = GUINT_TO_POINTER(adpProp->polling);
-               NEARDAL_TRACEF("neardalObj->polling=%d\n", adpProp->polling);
+               NEARDAL_TRACEF("neardalMgr->polling=%d\n", adpProp->polling);
        }
 
-       if (!strcmp(str0, "Targets")) {
+       if (!strcmp(arg_unnamed_arg0, "Targets")) {
                guint tmpLen;
-               if (!G_IS_VALUE(gvalue)) {
-                       NEARDAL_TRACE_ERR(
-                       "Unexpected value returned getting adapters: %s",
-                                         G_VALUE_TYPE_NAME(&gvalue));
-                       errCode = NEARDAL_ERROR_DBUS;
-                       goto error;
-               }
 
-               if (!G_VALUE_HOLDS(gvalue, DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH)) {
-                       NEARDAL_TRACE_ERR(
-                               "Unexpected type returned getting adapters: %s",
-                                         G_VALUE_TYPE_NAME(&gvalue));
-                       errCode = NEARDAL_ERROR_DBUS;
-                       goto error;
-               }
-
-               /* Extract the targets arrays List from the GValue */
-               pathsGpa = g_value_get_boxed(gvalue);
-               errCode = NEARDAL_ERROR_NO_ADAPTER;
-               if (pathsGpa == NULL)
-                       goto error;
-
-               if (pathsGpa->len <= 0) {       /* Remove all targets */
+               tgtArray = g_variant_dup_objv (tmp, &tmpLen);
+               adpProp->tgtNb = tmpLen;
+               if (tmpLen == 0) {
                        GList *node = NULL;
                        NEARDAL_TRACEF(
                                "Target array empty! Removing all targets\n");
                        while (g_list_length(adpProp->tgtList)) {
                                node = g_list_first(adpProp->tgtList);
                                tgtProp = (TgtProp *) node->data;
-                               neardal_adp_prv_cb_target_lost(proxy,
+                               neardal_adp_prv_cb_target_lost(tgtProp->proxy,
                                                               tgtProp->name,
-                                                               user_data);
+                                                              tgtProp->parent);
                        }
+                       g_strfreev(tgtArray);
+                       
                        errCode = NEARDAL_SUCCESS;
                        goto exit;
                }
-
+               
+               /* Extract the targets arrays List from the GValue */
+               errCode = NEARDAL_ERROR_NO_ADAPTER;
                tmpLen = 0;
-               while (tmpLen < pathsGpa->len) {
+               while (tmpLen < adpProp->tgtNb) {
                        /* Getting last target (targets list not updated with
                         * targets lost */
-                       gvalue = g_ptr_array_index(pathsGpa, tmpLen++);
-
-                       if (gvalue == NULL)
-                               goto error;
-
-                       tgtName = g_strdup((const gchar *)gvalue);
-
+                       
+                       tgtName = g_strdup(tgtArray[tmpLen++]);
+                       
                        /* TODO : for Neard Workaround, emulate 'TargetFound'
                         * signals */
-                       errCode = neardal_mgr_prv_get_adapter(neardalObj,
-                                                                  tgtName,
-                                                                  &adpProp);
-                       if (errCode != NEARDAL_SUCCESS)
-                               goto error;
-
                        errCode = neardal_mgr_prv_get_target(adpProp,
-                                                                 tgtName,
-                                                                 &tgtProp);
+                                                            tgtName,
+                                                            &tgtProp);
                        if (errCode == NEARDAL_ERROR_NO_TARGET) {
-                               neardal_adp_prv_cb_target_found(proxy,
-                                                                    tgtName,
-                                                                    user_data);
+                               neardal_adp_prv_cb_target_found(NULL,
+                                                               tgtName,
+                                                               adpProp);
                                errCode = NEARDAL_SUCCESS;
                        }
                }
+               g_strfreev(tgtArray);
        }
 
-       if (neardalObj->cb_adp_prop_changed != NULL)
-               (neardalObj->cb_adp_prop_changed)(adpProp->name, (char *) str0,
-                                             clientValue,
-                                         neardalObj->cb_adp_prop_changed_ud);
+       if (neardalMgr->cb_adp_prop_changed != NULL)
+               (neardalMgr->cb_adp_prop_changed)(adpProp->name,
+                                                 (char *) arg_unnamed_arg0,
+                                                 clientValue,
+                                       neardalMgr->cb_adp_prop_changed_ud);
        return;
 
 exit:
-error:
        if (errCode != NEARDAL_SUCCESS)
                NEARDAL_TRACEF("Exit with error code %d:%s\n", errCode,
                              neardal_error_get_text(errCode));
@@ -224,17 +208,21 @@ error:
 static errorCode_t neardal_adp_prv_read_properties(AdpProp *adpProp)
 {
        errorCode_t     errCode                 = NEARDAL_SUCCESS;
-       GHashTable      *neardAdapterPropHash   = NULL;
        GError          *gerror                 = NULL;
-       void            *tmp                    = NULL;
+       GVariant        *tmp                    = NULL;
+       GVariant        *tmpOut                 = NULL;
+       gchar           **tgtArray              = NULL;
+       gsize           len;
+       neardal_t       neardalMgr              = NULL;
 
        NEARDAL_TRACEIN();
        g_assert(adpProp != NULL);
-       g_assert(adpProp->dbusProxy != NULL);
+       g_assert(adpProp->proxy != NULL);
+       neardalMgr = adpProp->parent;
+       g_assert(neardalMgr != NULL);
 
-       org_neard_Adapter_get_properties(adpProp->dbusProxy,
-                                        &neardAdapterPropHash,
-                                        &gerror);
+       org_neard_adp__call_get_properties_sync(adpProp->proxy, &tmp,
+                                               NULL, &gerror);
        if (gerror != NULL) {
                errCode = NEARDAL_ERROR_DBUS_CANNOT_INVOKE_METHOD;
                NEARDAL_TRACE_ERR(
@@ -244,39 +232,46 @@ static errorCode_t neardal_adp_prv_read_properties(AdpProp *adpProp)
                goto exit;
        }
 
-       errCode = neardal_tools_prv_hashtable_get(neardAdapterPropHash,
-                                               "Targets",
-                                       DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH,
-                                       &tmp);
-       if (errCode == NEARDAL_SUCCESS) {
-               neardal_tools_prv_g_ptr_array_copy(&adpProp->tgtArray,
-                                               tmp);
-
+       NEARDAL_TRACEF("GVariant=%s\n", g_variant_print (tmp, TRUE));
+       tmpOut = g_variant_lookup_value(tmp, "Targets", G_VARIANT_TYPE_ARRAY);
+       if (tmpOut != NULL) {
+               tgtArray = g_variant_dup_objv (tmpOut, &len);
+               adpProp->tgtNb = len;
+               if (len == 0) {
+                       g_strfreev(tgtArray);
+                       tgtArray = NULL;
+               } else {
+                       guint len = 0;
+                       char *tgtName;
+
+                       while (len < adpProp->tgtNb &&
+                               errCode == NEARDAL_SUCCESS) {
+                               tgtName = tgtArray[len++];
+                               errCode = neardal_tgt_add(neardalMgr, adpProp,
+                                                       tgtName);
+                       }
+               }
        }
 
-       errCode = neardal_tools_prv_hashtable_get(neardAdapterPropHash,
-                                               "Polling",
-                                               G_TYPE_BOOLEAN,
-                                               &tmp);
-       if (errCode == NEARDAL_SUCCESS)
-               adpProp->polling = (gboolean) tmp;
-
-       errCode = neardal_tools_prv_hashtable_get(neardAdapterPropHash,
-                                               "Powered",
-                                               G_TYPE_BOOLEAN,
-                                               &tmp);
-       if (errCode == NEARDAL_SUCCESS)
-               adpProp->powered = (gboolean) tmp;
-
-       errCode = neardal_tools_prv_hashtable_get(neardAdapterPropHash,
-                                               "Protocols",
-                                               G_TYPE_STRV,
-                                               &tmp);
-       if (errCode == NEARDAL_SUCCESS)
-               adpProp->protocols = g_boxed_copy(G_TYPE_STRV, tmp);
-
-       g_hash_table_destroy(neardAdapterPropHash);
-
+       tmpOut = g_variant_lookup_value(tmp, "Polling", G_VARIANT_TYPE_BOOLEAN);
+       if (tmpOut != NULL)
+               adpProp->polling = g_variant_get_boolean  (tmpOut);
+
+       tmpOut = g_variant_lookup_value(tmp, "Powered", G_VARIANT_TYPE_BOOLEAN);
+       if (tmpOut != NULL)
+               adpProp->powered = g_variant_get_boolean  (tmpOut);
+
+       tmpOut = g_variant_lookup_value(tmp, "Protocols",
+                                       G_VARIANT_TYPE_ARRAY);
+       if (tmpOut != NULL) {
+               adpProp->protocols = g_variant_dup_strv (tmpOut, &len);
+               adpProp->lenProtocols = len;
+               if (adpProp->lenProtocols == 0) {
+                       g_strfreev(adpProp->protocols);
+                       adpProp->protocols = NULL;
+               }
+       }
+       
 exit:
        return errCode;
 }
@@ -309,119 +304,109 @@ errorCode_t neardal_adp_prv_get_target(AdpProp *adpProp, char *tgtName,
        return errCode;
 }
 
-
 /******************************************************************************
  * neardal_adp_init: Get Neard Manager Properties = NFC Adapters list.
  * Create a DBus proxy for the first one NFC adapter if present
  * Register Neard Manager signals ('PropertyChanged')
  *****************************************************************************/
-static errorCode_t neardal_adp_prv_init(neardal_t neardalObj,
+static errorCode_t neardal_adp_prv_init(neardal_t neardalMgr,
                                             AdpProp *adpProp)
 {
        errorCode_t     errCode = NEARDAL_SUCCESS;
-       char            *tgtName;
 
        NEARDAL_TRACEIN();
        g_assert(adpProp != NULL);
 
-       if (adpProp->dbusProxy != NULL) {
-               dbus_g_proxy_disconnect_signal(adpProp->dbusProxy,
-                                              NEARD_ADP_SIG_PROPCHANGED,
-                       G_CALLBACK(neardal_adp_prv_cb_property_changed),
-                                              NULL);
-               g_object_unref(adpProp->dbusProxy);
+       if (adpProp->proxy != NULL) {
+               g_signal_handlers_disconnect_by_func(adpProp->proxy,
+                               G_CALLBACK(neardal_adp_prv_cb_property_changed),
+                                                    NULL);
+               g_signal_handlers_disconnect_by_func(adpProp->proxy,
+                               G_CALLBACK(neardal_adp_prv_cb_target_found),
+                                                    NULL);
+               g_signal_handlers_disconnect_by_func(adpProp->proxy,
+                               G_CALLBACK(neardal_adp_prv_cb_target_lost),
+                                                    NULL);
+               g_object_unref(adpProp->proxy);
        }
-       adpProp->dbusProxy = NULL;
+       adpProp->proxy = NULL;
 
        errCode = NEARDAL_ERROR_NO_ADAPTER;
        if (adpProp->name == NULL)
                return errCode;
 
-       errCode = neardal_tools_prv_create_proxy(neardalObj->conn,
-                                                 &adpProp->dbusProxy,
-                                                 adpProp->name,
-                                                 NEARD_ADAPTERS_IF_NAME);
-       if (errCode != NEARDAL_SUCCESS)
-               return errCode;
+       adpProp->proxy = org_neard_adp__proxy_new_sync(neardalMgr->conn,
+                                       G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE,
+                                                       NEARD_DBUS_SERVICE,
+                                                       adpProp->name,
+                                                       NULL, /* GCancellable */
+                                                       &neardalMgr->gerror);
 
-       errCode = neardal_adp_prv_read_properties(adpProp);
-       if (errCode == NEARDAL_SUCCESS && adpProp->tgtArray->len > 0) {
-               guint len = 0;
-
-               while (len < adpProp->tgtArray->len &&
-                       errCode == NEARDAL_SUCCESS) {
-                       tgtName = g_ptr_array_index(adpProp->tgtArray, len++);
-                       errCode = neardal_tgt_add(neardalObj, tgtName);
-               }
+       if (neardalMgr->gerror != NULL) {
+               NEARDAL_TRACE_ERR(
+                       "Unable to create Neard Adapter Proxy (%d:%s)\n",
+                                neardalMgr->gerror->code,
+                               neardalMgr->gerror->message);
+               neardal_tools_prv_free_gerror(neardalMgr);
+               return NEARDAL_ERROR_DBUS_CANNOT_CREATE_PROXY;
        }
 
-       /* Register Marshaller for signals (String,Variant) */
-       dbus_g_object_register_marshaller(neardal_marshal_VOID__STRING_BOXED,
-                                               G_TYPE_NONE, G_TYPE_STRING,
-                                               G_TYPE_VALUE, G_TYPE_INVALID);
+       errCode = neardal_adp_prv_read_properties(adpProp);
 
        NEARDAL_TRACEF("Register Neard-Adapter Signal ");
        NEARDAL_TRACE("'PropertyChanged'\n");
-       dbus_g_proxy_add_signal(adpProp->dbusProxy, NEARD_ADP_SIG_PROPCHANGED,
-                               G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID);
-       dbus_g_proxy_connect_signal(adpProp->dbusProxy,
-                                   NEARD_ADP_SIG_PROPCHANGED,
-                        G_CALLBACK(neardal_adp_prv_cb_property_changed),
-                                   neardalObj, NULL);
+       g_signal_connect(adpProp->proxy, NEARD_ADP_SIG_PROPCHANGED,
+                       G_CALLBACK (neardal_adp_prv_cb_property_changed),
+                         neardalMgr);
 
        /* Register 'TargetFound', 'TargetLost' */
        NEARDAL_TRACEF("Register Neard-Adapter Signal ");
        NEARDAL_TRACE("'TargetFound'\n");
-       dbus_g_proxy_add_signal(adpProp->dbusProxy, NEARD_ADP_SIG_TGT_FOUND,
-                               DBUS_TYPE_G_OBJECT_PATH, G_TYPE_INVALID);
-       dbus_g_proxy_connect_signal(adpProp->dbusProxy, NEARD_ADP_SIG_TGT_FOUND,
-               G_CALLBACK(neardal_adp_prv_cb_target_found), neardalObj,
-                                   NULL);
+       g_signal_connect(adpProp->proxy, NEARD_ADP_SIG_TGT_FOUND,
+                       G_CALLBACK (neardal_adp_prv_cb_target_found),
+                         adpProp);
 
        NEARDAL_TRACEF("Register Neard-Adapter Signal ");
        NEARDAL_TRACE("'TargetLost'\n");
-       dbus_g_proxy_add_signal(adpProp->dbusProxy, NEARD_ADP_SIG_TGT_LOST,
-                               DBUS_TYPE_G_OBJECT_PATH, G_TYPE_INVALID);
-       dbus_g_proxy_connect_signal(adpProp->dbusProxy, NEARD_ADP_SIG_TGT_LOST,
-                               G_CALLBACK(neardal_adp_prv_cb_target_lost),
-                                       neardalObj, NULL);
+       g_signal_connect(adpProp->proxy, NEARD_ADP_SIG_TGT_LOST,
+                       G_CALLBACK (neardal_adp_prv_cb_target_lost),
+                         adpProp);
 
        return errCode;
 }
 
 /******************************************************************************
- * neardal_adp_release: unref DBus proxy, disconnect Neard Adapter signals
+ * neardal_adp_prv_free: unref DBus proxy, disconnect Neard Adapter signals
  *****************************************************************************/
-static void neardal_adp_prv_release(AdpProp *adpProp)
+static void neardal_adp_prv_free(AdpProp **adpProp)
 {
        NEARDAL_TRACEIN();
-       if (adpProp->dbusProxy != NULL) {
-               dbus_g_proxy_disconnect_signal(adpProp->dbusProxy,
-                                              NEARD_ADP_SIG_PROPCHANGED,
-                       G_CALLBACK(neardal_adp_prv_cb_property_changed),
-                                              NULL);
-               dbus_g_proxy_disconnect_signal(adpProp->dbusProxy,
-                                              NEARD_ADP_SIG_TGT_FOUND,
-                       G_CALLBACK(neardal_adp_prv_cb_target_found),
-                                              NULL);
-               dbus_g_proxy_disconnect_signal(adpProp->dbusProxy,
-                                              NEARD_ADP_SIG_TGT_LOST,
-                       G_CALLBACK(neardal_adp_prv_cb_target_lost),
-                                              NULL);
-               g_object_unref(adpProp->dbusProxy);
-               adpProp->dbusProxy = NULL;
+       if ((*adpProp)->proxy != NULL) {
+               g_signal_handlers_disconnect_by_func((*adpProp)->proxy,
+                               G_CALLBACK(neardal_adp_prv_cb_property_changed),
+                                                    NULL);
+               g_signal_handlers_disconnect_by_func((*adpProp)->proxy,
+                               G_CALLBACK(neardal_adp_prv_cb_target_found),
+                                                    NULL);
+               g_signal_handlers_disconnect_by_func((*adpProp)->proxy,
+                               G_CALLBACK(neardal_adp_prv_cb_target_lost),
+                                                    NULL);
+               g_object_unref((*adpProp)->proxy);
+               (*adpProp)->proxy = NULL;
        }
-       g_free(adpProp->name);
-       if (adpProp->tgtArray != NULL)
-               neardal_tools_prv_g_ptr_array_free(adpProp->tgtArray);
-       g_boxed_free(G_TYPE_STRV, adpProp->protocols);
-       g_free(adpProp);
+       g_free((*adpProp)->name);
+// TODO remove if ((*adpProp)->tgtArray != NULL)
+//             g_strfreev((*adpProp)->tgtArray);
+       if ((*adpProp)->protocols != NULL)
+               g_strfreev((*adpProp)->protocols);
+       g_free((*adpProp));
+       (*adpProp) = NULL;
 }
 
 /******************************************************************************
  * neardal_get_adapters: get an array of NFC adapters (adpName) present
  *****************************************************************************/
-errorCode_t neardal_get_adapters(neardal_t neardalObj, char ***array,
+errorCode_t neardal_get_adapters(neardal_t neardalMgr, char ***array,
                                  int *len)
 {
        errorCode_t     errCode         = NEARDAL_ERROR_NO_ADAPTER;
@@ -431,10 +416,10 @@ errorCode_t neardal_get_adapters(neardal_t neardalObj, char ***array,
        AdpProp         *adapter        = NULL;
        gsize           size;
 
-       if (neardalObj == NULL || array == NULL)
+       if (neardalMgr == NULL || array == NULL)
                return NEARDAL_ERROR_INVALID_PARAMETER;
 
-       adpNb = g_list_length(neardalObj->mgrProp.adpList);
+       adpNb = g_list_length(neardalMgr->prop.adpList);
        if (adpNb > 0) {
                errCode = NEARDAL_ERROR_NO_MEMORY;
                size = (adpNb + 1) * sizeof(char *);
@@ -442,7 +427,7 @@ errorCode_t neardal_get_adapters(neardal_t neardalObj, char ***array,
                if (adps != NULL) {
                        GList   *list;
                        while (ct < adpNb) {
-                               list = neardalObj->mgrProp.adpList;
+                               list = neardalMgr->prop.adpList;
                                adapter = g_list_nth_data(list, ct);
                                if (adapter != NULL)
                                        adps[ct++] = g_strdup(adapter->name);
@@ -461,12 +446,13 @@ errorCode_t neardal_get_adapters(neardal_t neardalObj, char ***array,
  * neardal_adp_add: add new NFC adapter, initialize DBus Proxy connection,
  * register adapter signal
  *****************************************************************************/
-errorCode_t neardal_adp_add(neardal_t neardalObj, char *adapterName)
+errorCode_t neardal_adp_add(neardal_t neardalMgr, char *adapterName)
 {
        errorCode_t     errCode = NEARDAL_SUCCESS;
        AdpProp         *adpProp = NULL;
+       GList           **adpList;
 
-       g_assert(neardalObj != NULL);
+       g_assert(neardalMgr != NULL);
        NEARDAL_TRACEF("Adding adapter:%s\n", adapterName);
 
        adpProp = g_try_malloc0(sizeof(AdpProp));
@@ -474,25 +460,34 @@ errorCode_t neardal_adp_add(neardal_t neardalObj, char *adapterName)
                return NEARDAL_ERROR_NO_MEMORY;
 
        adpProp->name = g_strdup(adapterName);
-       neardalObj->mgrProp.adpList = g_list_prepend(neardalObj->mgrProp.adpList,
-                                                    (gpointer) adpProp);
+       adpProp->parent = neardalMgr;
+       
+       adpList = &neardalMgr->prop.adpList;
+       *adpList = g_list_prepend(*adpList, (gpointer) adpProp);
+       errCode = neardal_adp_prv_init(neardalMgr, adpProp);
+
        NEARDAL_TRACEF("NEARDAL LIB adapterList contains %d elements\n",
-                     g_list_length(neardalObj->mgrProp.adpList));
-       errCode = neardal_adp_prv_init(neardalObj, adpProp);
+                     g_list_length(*adpList));
+
+       /* Invoke client cb 'adapter added' */
+       if (neardalMgr->cb_adp_added != NULL)
+                       (neardalMgr->cb_adp_added)((char *) adapterName,
+                                              neardalMgr->cb_adp_added_ud);
 
        return errCode;
 }
 
 /******************************************************************************
- * neardal_adp_remove: remove NFC adapter, unref DBus Proxy connection,
+ * neardal_adp_remove: remove one NFC adapter, unref DBus Proxy connection,
  * unregister adapter signal
  *****************************************************************************/
-errorCode_t neardal_adp_remove(neardal_t neardalObj, AdpProp *adpProp)
+errorCode_t neardal_adp_remove(neardal_t neardalMgr, AdpProp *adpProp)
 {
        TgtProp         *tgtProp;
        GList           *node = NULL;
+       GList           **adpList;
 
-       g_assert(neardalObj != NULL);
+       g_assert(neardalMgr != NULL);
        g_assert(adpProp != NULL);
 
        NEARDAL_TRACEF("Removing adapter:%s\n", adpProp->name);
@@ -502,13 +497,11 @@ errorCode_t neardal_adp_remove(neardal_t neardalObj, AdpProp *adpProp)
                node = g_list_first(adpProp->tgtList);
                tgtProp = (TgtProp *) node->data;
                neardal_tgt_remove(tgtProp);
-               adpProp->tgtList = g_list_remove(adpProp->tgtList,
-                                                (gconstpointer) tgtProp);
        }
 
-       neardal_adp_prv_release(adpProp);
-       neardalObj->mgrProp.adpList = g_list_remove(neardalObj->mgrProp.adpList,
-                                                   (gconstpointer) adpProp);
+       adpList = &neardalMgr->prop.adpList;
+       (*adpList) = g_list_remove((*adpList), (gconstpointer) adpProp);
+       neardal_adp_prv_free(&adpProp);
 
        return NEARDAL_SUCCESS;
 }
@@ -533,7 +526,7 @@ errorCode_t neardal_adp_publish(AdpProp *adpProp, RcdProp *rcd)
        if (err != NEARDAL_SUCCESS)
                goto exit;
 
-       org_neard_Adapter_publish(adpProp->dbusProxy, hash, &gerror);
+// TODO        org_neard_Adapter_publish(adpProp->proxy, hash, &gerror);
 
 exit:
        if (hash != NULL)
index c1596e5..b015227 100644 (file)
 #ifndef __NEARDAL_ADAPTER_H
 #define __NEARDAL_ADAPTER_H
 
+#include "neard_adapter_proxy.h"
 #include "neardal_target.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
 
-#define NEARD_ADAPTERS_IF_NAME                         "org.neard.Adapter"
-#define NEARD_ADP_SIG_PROPCHANGED                      "PropertyChanged"
-#define NEARD_ADP_SIG_TGT_FOUND                                "TargetFound"
-#define NEARD_ADP_SIG_TGT_LOST                         "TargetLost"
+#define NEARD_ADP_IF_NAME                              "org.neard.Adapter"
+#define NEARD_ADP_SIG_PROPCHANGED                      "property-changed"
+#define NEARD_ADP_SIG_TGT_FOUND                                "target-found"
+#define NEARD_ADP_SIG_TGT_LOST                         "target-lost"
 
 /* NEARDAL Adapter Properties */
 typedef struct {
-       DBusGProxy              *dbusProxy;     /* The proxy connected to Neard
+       orgNeardAdp             *proxy;         /* The proxy connected to Neard
                                                Adapter interface */
        char                    *name;          /* DBus interface name
                                                (as id) */
+       neardal_t               parent;
        gboolean                polling;        /* adapter polling active ? */
        gboolean                powered;        /* adapter powered ? */
-       char                    **protocols;    /* protocols list */
-       GPtrArray               *tgtArray;      /* temporary storage */
+       gchar                   **protocols;    /* protocols list */
+       gsize                   lenProtocols;
+//     gchar                   **tgtArray;     /* temporary storage */
+       gsize                   tgtNb;
        GList                   *tgtList;       /* Neard adapter targets list
                                                available */
 } AdpProp;
@@ -56,13 +60,13 @@ errorCode_t neardal_adp_prv_get_target(AdpProp *adpProp, char *tgtName,
  * neardal_adp_add: add new NEARDAL adapter, initialize DBus Proxy
  * connection, register adapter signal
  *****************************************************************************/
-errorCode_t neardal_adp_add(neardal_t neardalObj, char *adapterName);
+errorCode_t neardal_adp_add(neardal_t neardalMgr, char *adapterName);
 
 /******************************************************************************
  * neardal_adp_remove: remove NEARDAL adapter, unref DBus Proxy
  * connection, unregister adapter signal
  *****************************************************************************/
-errorCode_t neardal_adp_remove(neardal_t neardalObj, AdpProp *adpProp);
+errorCode_t neardal_adp_remove(neardal_t neardalMgr, AdpProp *adpProp);
 
 /******************************************************************************
  * neardal_adp_publish: Creates and publish NDEF record to be written to
index 0488ec6..d11855c 100644 (file)
 #include <stdio.h>
 #include <string.h>
 #include <glib.h>
-#include <dbus/dbus-glib.h>
 #include <glib-object.h>
-#include "dbus/dbus.h"
 
-#include "neard-manager-proxy.h"
-#include "neard-adapter-proxy.h"
+#include "neard_manager_proxy.h"
+#include "neard_adapter_proxy.h"
 
 #include "neardal.h"
 #include "neardal_prv.h"
 #include <glib-2.0/glib/glist.h>
 #include <glib-2.0/glib/garray.h>
+#include <glib-2.0/glib/galloca.h>
 
 /******************************************************************************
  * neardal_mgr_prv_cb_property_changed: Callback called when a NFC Manager
  * Property is changed
  *****************************************************************************/
-static void neardal_mgr_prv_cb_property_changed(DBusGProxy  *proxy,
-                                                    const char  *str0,
-                                                    GValue      *gvalue,
-                                                    void        *user_data)
+static void neardal_mgr_prv_cb_property_changed( orgNeardMgr *proxy,
+                                                const gchar *arg_unnamed_arg0,
+                                                GVariant *arg_unnamed_arg1,
+                                                void        *user_data)
 {
-       neardal_t       neardalObj      = user_data;
+       neardal_t       neardalMgr      = user_data;
 
        NEARDAL_TRACEIN();
 
-       g_assert(neardalObj != NULL);
-       g_assert(str0 != NULL);
+       g_assert(neardalMgr != NULL);
+       g_assert(arg_unnamed_arg0 != NULL);
        (void) proxy; /* remove warning */
-       (void) gvalue; /* remove warning */
+       (void) arg_unnamed_arg1; /* remove warning */
 
-       NEARDAL_TRACEF("str0='%s'\n", str0);
+       NEARDAL_TRACEF("arg_unnamed_arg0='%s'\n", arg_unnamed_arg0);
+       NEARDAL_TRACEF("arg_unnamed_arg1=%s\n",
+                      g_variant_print (arg_unnamed_arg1, TRUE));
        /* Adapters List ignored... */
 }
 
@@ -59,96 +60,93 @@ static void neardal_mgr_prv_cb_property_changed(DBusGProxy  *proxy,
  * neardal_mgr_prv_cb_adapter_added: Callback called when a NFC adapter is
  * added
  *****************************************************************************/
-static void neardal_mgr_prv_cb_adapter_added(DBusGProxy  *proxy,
-                                                 const char  *str0,
-                                                 void        *user_data)
+static void neardal_mgr_prv_cb_adapter_added(orgNeardMgr *proxy,
+                                            const gchar *arg_unnamed_arg0,
+                                            void        *user_data)
 {
-       neardal_t       neardalObj      = user_data;
+       neardal_t       neardalMgr      = user_data;
        errorCode_t     errCode = NEARDAL_SUCCESS;
 
        NEARDAL_TRACEIN();
-       g_assert(neardalObj != NULL);
-       g_assert(str0 != NULL);
+       g_assert(neardalMgr != NULL);
+       g_assert(arg_unnamed_arg0 != NULL);
        (void) proxy; /* remove warning */
 
-       errCode = neardal_adp_add(neardalObj, (char *) str0);
+       errCode = neardal_adp_add(neardalMgr, (char *) arg_unnamed_arg0);
        if (errCode != NEARDAL_SUCCESS)
                return;
 
-       /* Invoke client cb 'adapter added' */
-       if (neardalObj->cb_adp_added != NULL)
-                       (neardalObj->cb_adp_added)((char *) str0,
-                                              neardalObj->cb_adp_added_ud);
        NEARDAL_TRACEF("NEARDAL LIB adapterList contains %d elements\n",
-                     g_list_length(neardalObj->mgrProp.adpList));
+                     g_list_length(neardalMgr->prop.adpList));
 }
 
 /******************************************************************************
  * neardal_mgr_prv_cb_adapter_removed: Callback called when a NFC adapter
  * is removed
  *****************************************************************************/
-static void neardal_mgr_prv_cb_adapter_removed(DBusGProxy  *proxy,
-                                                   const char  *str0,
-                                                   void *user_data)
+static void neardal_mgr_prv_cb_adapter_removed(orgNeardMgr *proxy,
+                                              const gchar *arg_unnamed_arg0,
+                                              void *user_data)
 {
-       neardal_t       neardalObj      = user_data;
+       neardal_t       neardalMgr      = user_data;
        GList   *node   = NULL;
 
        NEARDAL_TRACEIN();
-       g_assert(neardalObj != NULL);
-       g_assert(str0 != NULL);
+       g_assert(neardalMgr != NULL);
+       g_assert(arg_unnamed_arg0 != NULL);
        (void) proxy; /* remove warning */
 
-       node = g_list_first(neardalObj->mgrProp.adpList);
+       node = g_list_first(neardalMgr->prop.adpList);
        if (node == NULL) {
-               NEARDAL_TRACE_ERR("NFC adapter not found! (%s)\n", str0);
+               NEARDAL_TRACE_ERR("NFC adapter not found! (%s)\n",
+                                 arg_unnamed_arg0);
                return;
        }
 
-       neardal_adp_remove(neardalObj, ((AdpProp *)node->data));
        /* Invoke client cb 'adapter removed' */
-       if (neardalObj->cb_adp_removed != NULL)
-               (neardalObj->cb_adp_removed)((char *) str0,
-                                        neardalObj->cb_adp_removed_ud);
+       if (neardalMgr->cb_adp_removed != NULL)
+               (neardalMgr->cb_adp_removed)((char *) arg_unnamed_arg0,
+                                        neardalMgr->cb_adp_removed_ud);
 
+       neardal_adp_remove(neardalMgr, ((AdpProp *)node->data));
+       
        NEARDAL_TRACEF("NEARDAL LIB adapterList contains %d elements\n",
-                     g_list_length(neardalObj->mgrProp.adpList));
+                     g_list_length(neardalMgr->prop.adpList));
 }
 
 /******************************************************************************
  * neardal_mgr_prv_get_all_adapters: Check if neard has an adapter
  *****************************************************************************/
-static errorCode_t neardal_mgr_prv_get_all_adapters(neardal_t neardalObj,
-                                                        GPtrArray **adpArray)
+static errorCode_t neardal_mgr_prv_get_all_adapters(neardal_t neardalMgr,
+                                                        gchar ***adpArray,
+                                                        gsize  *len)
 {
-       GHashTable      *neardAdapterHash       = NULL;
-       GPtrArray       *pathsGpa               = NULL;
        errorCode_t     errCode                 = NEARDAL_ERROR_NO_ADAPTER;
+       GVariant        *tmp            = NULL;
+       GVariant        *tmpOut         = NULL;
 
-       g_assert(neardalObj != NULL);
+       g_assert(neardalMgr != NULL);
        g_assert(adpArray != NULL);
 
        /* Invoking method 'GetProperties' on Neard Manager */
-       if (org_neard_Manager_get_properties(neardalObj->mgrProxy,
-                                            &neardAdapterHash,
-                                            &neardalObj->gerror)) {
-               /* Receiving a GPtrArray of GList */
+       if (org_neard_mgr__call_get_properties_sync(neardalMgr->proxy, &tmp,
+                                                   NULL,
+                                            &neardalMgr->gerror)) {
                NEARDAL_TRACEF("Parsing neard adapters...\n");
-               errCode = neardal_tools_prv_hashtable_get(neardAdapterHash,
-                                                  NEARD_MGR_SECTION_ADAPTERS,
-                                       DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH,
-                                       &pathsGpa);
-               if (errCode != NEARDAL_SUCCESS || pathsGpa->len <= 0)
+               NEARDAL_TRACEF("GVariant=%s\n", g_variant_print (tmp, TRUE));
+               
+               tmpOut = g_variant_lookup_value(tmp, "Adapters",
+                                               G_VARIANT_TYPE_ARRAY);
+               if (tmpOut != NULL) {
+                       *adpArray = g_variant_dup_objv (tmpOut, len);
+                       errCode = NEARDAL_SUCCESS;
+               } else
                        errCode = NEARDAL_ERROR_NO_ADAPTER;
-               else
-                       neardal_tools_prv_g_ptr_array_copy(adpArray, pathsGpa);
-
-               g_hash_table_destroy(neardAdapterHash);
        } else {
                errCode = NEARDAL_ERROR_DBUS_CANNOT_INVOKE_METHOD;
-               NEARDAL_TRACE_ERR("%d:%s\n", neardalObj->gerror->code,
-                                neardalObj->gerror->message);
-               neardal_tools_prv_free_gerror(neardalObj);
+               NEARDAL_TRACE_ERR("%d:%s\n", neardalMgr->gerror->code,
+                                neardalMgr->gerror->message);
+               neardal_tools_prv_free_gerror(neardalMgr);
        }
 
        return errCode;
@@ -158,7 +156,7 @@ static errorCode_t neardal_mgr_prv_get_all_adapters(neardal_t neardalObj,
 /******************************************************************************
  * neardal_mgr_prv_get_adapter: Get NFC Adapter from name
  *****************************************************************************/
-errorCode_t neardal_mgr_prv_get_adapter(neardal_t neardalObj,
+errorCode_t neardal_mgr_prv_get_adapter(neardal_t neardalMgr,
                                             const char *adpName,
                                             AdpProp **adpProp)
 {
@@ -167,10 +165,10 @@ errorCode_t neardal_mgr_prv_get_adapter(neardal_t neardalObj,
        AdpProp         *adapter;
        GList           *tmpList;
 
-       g_assert(neardalObj != NULL);
+       g_assert(neardalMgr != NULL);
        g_assert(adpProp != NULL);
 
-       tmpList = neardalObj->mgrProp.adpList;
+       tmpList = neardalMgr->prop.adpList;
        while (len < g_list_length(tmpList)) {
                adapter = g_list_nth_data(tmpList, len);
                if (adapter != NULL) {
@@ -190,8 +188,8 @@ errorCode_t neardal_mgr_prv_get_adapter(neardal_t neardalObj,
 /******************************************************************************
  * neardal_mgr_prv_get_adapter_from_proxy: Get NFC Adapter from proxy
  *****************************************************************************/
-errorCode_t neardal_mgr_prv_get_adapter_from_proxy(neardal_t neardalObj,
-                                                       DBusGProxy *adpProxy,
+errorCode_t neardal_mgr_prv_get_adapter_from_proxy(neardal_t neardalMgr,
+                                                       orgNeardAdp *adpProxy,
                                                        AdpProp **adpProp)
 {
        errorCode_t     errCode = NEARDAL_ERROR_NO_ADAPTER;
@@ -199,14 +197,14 @@ errorCode_t neardal_mgr_prv_get_adapter_from_proxy(neardal_t neardalObj,
        AdpProp         *adapter;
        GList           *tmpList;
 
-       g_assert(neardalObj != NULL);
+       g_assert(neardalMgr != NULL);
        g_assert(adpProp != NULL);
 
-       tmpList = neardalObj->mgrProp.adpList;
+       tmpList = neardalMgr->prop.adpList;
        while (len < g_list_length(tmpList)) {
                adapter = g_list_nth_data(tmpList, len);
                if (adapter != NULL) {
-                       if (adapter->dbusProxy == adpProxy) {
+                       if (adapter->proxy == adpProxy) {
                                *adpProp = adapter;
                                errCode = NEARDAL_SUCCESS;
                                break;
@@ -280,105 +278,116 @@ errorCode_t neardal_mgr_prv_get_record(TgtProp *tgtProp,
 
 
 /******************************************************************************
- * neardal_mgr_init: Get Neard Manager Properties = NFC Adapters list.
+ * neardal_mgr_create: Get Neard Manager Properties = NFC Adapters list.
  * Create a DBus proxy for the first one NFC adapter if present
  * Register Neard Manager signals ('PropertyChanged')
  *****************************************************************************/
-errorCode_t neardal_mgr_init(neardal_t neardalObj)
+errorCode_t neardal_mgr_create(neardal_t neardalMgr)
 {
        errorCode_t     errCode;
-       GPtrArray       *adpArray = NULL;
+       gchar           **adpArray = NULL;
+       gsize           adpArrayLen;
        char            *adpName;
        guint           len;
-       DBusGProxy      *proxyTmp;
 
        NEARDAL_TRACEIN();
-       errCode = neardal_tools_prv_create_proxy(neardalObj->conn,
-                                                 &neardalObj->mgrProxy,
-                                                 "/", NEARD_MGR_IF_NAME);
-
-       if (errCode != NEARDAL_SUCCESS)
-               return errCode;
+       if (neardalMgr->proxy != NULL) {
+               g_signal_handlers_disconnect_by_func(neardalMgr->proxy,
+                               G_CALLBACK(neardal_mgr_prv_cb_property_changed),
+                                                       NULL);
+               g_signal_handlers_disconnect_by_func(neardalMgr->proxy,
+                               G_CALLBACK(neardal_mgr_prv_cb_adapter_added),
+                                                       NULL);
+               g_signal_handlers_disconnect_by_func(neardalMgr->proxy,
+                               G_CALLBACK(neardal_mgr_prv_cb_adapter_removed),
+                                                       NULL);
+               g_object_unref(neardalMgr->proxy);
+               neardalMgr->proxy = NULL;
+       }
+       
+       neardalMgr->proxy = org_neard_mgr__proxy_new_sync(neardalMgr->conn,
+                                       G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE,
+                                                       NEARD_DBUS_SERVICE,
+                                                       NEARD_MGR_PATH,
+                                                       NULL, /* GCancellable */
+                                                       &neardalMgr->gerror);
+
+       if (neardalMgr->gerror != NULL) {
+               NEARDAL_TRACE_ERR(
+                       "Unable to create Neard Manager Proxy (%d:%s)\n",
+                                neardalMgr->gerror->code,
+                               neardalMgr->gerror->message);
+               neardal_tools_prv_free_gerror(neardalMgr);
+               return NEARDAL_ERROR_DBUS_CANNOT_CREATE_PROXY;
+       }
 
-       /* Check if a NFC adapter is present */
-       errCode = neardal_mgr_prv_get_all_adapters(neardalObj, &adpArray);
-       if (adpArray != NULL && adpArray->len > 0) {
+       /* Get and store NFC adapters (is present) */
+       errCode = neardal_mgr_prv_get_all_adapters(neardalMgr, &adpArray,
+                                                  &adpArrayLen);
+       if (adpArray != NULL && adpArrayLen > 0) {
                len = 0;
-               while (len < adpArray->len && errCode == NEARDAL_SUCCESS) {
-                       adpName =  g_ptr_array_index(adpArray, len++);
-                       errCode = neardal_adp_add(neardalObj, adpName);
+               while (len < adpArrayLen && errCode == NEARDAL_SUCCESS) {
+                       adpName =  adpArray[len++];
+                       errCode = neardal_adp_add(neardalMgr, adpName);
                }
-               neardal_tools_prv_g_ptr_array_free(adpArray);
+               g_strfreev(adpArray);
        }
 
-       /* Register Marshaller for signals (String,Variant) */
-       dbus_g_object_register_marshaller(neardal_marshal_VOID__STRING_BOXED,
-                                         G_TYPE_NONE, G_TYPE_STRING,
-                                         G_TYPE_VALUE, G_TYPE_INVALID);
-
-
        /* Register for manager signals 'PropertyChanged(String,Variant)' */
-       proxyTmp = neardalObj->mgrProxy;
        NEARDAL_TRACEF("Register Neard-Manager Signal 'PropertyChanged'\n");
-       dbus_g_proxy_add_signal(proxyTmp, NEARD_MGR_SIG_PROPCHANGED,
-                               G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID);
-       dbus_g_proxy_connect_signal(proxyTmp, NEARD_MGR_SIG_PROPCHANGED,
-                         G_CALLBACK(neardal_mgr_prv_cb_property_changed),
-                                  neardalObj, NULL);
-
+       g_signal_connect(neardalMgr->proxy,
+                        NEARD_MGR_SIG_PROPCHANGED,
+                        G_CALLBACK (neardal_mgr_prv_cb_property_changed),
+                        neardalMgr);
 
        /* Register for manager signals 'AdapterAdded(ObjectPath)' */
        NEARDAL_TRACEF("Register Neard-Manager Signal 'AdapterAdded'\n");
-       dbus_g_proxy_add_signal(proxyTmp, NEARD_MGR_SIG_ADP_ADDED,
-                               DBUS_TYPE_G_OBJECT_PATH, G_TYPE_INVALID);
-       dbus_g_proxy_connect_signal(proxyTmp, NEARD_MGR_SIG_ADP_ADDED,
-                       G_CALLBACK(neardal_mgr_prv_cb_adapter_added),
-                                   neardalObj, NULL);
+       g_signal_connect(neardalMgr->proxy,
+                        NEARD_MGR_SIG_ADP_ADDED,
+                        G_CALLBACK (neardal_mgr_prv_cb_adapter_added),
+                        neardalMgr);
 
        /* Register for manager signals 'AdapterRemoved(ObjectPath)' */
        NEARDAL_TRACEF("Register Neard-Manager Signal 'AdapterRemoved'\n");
-       dbus_g_proxy_add_signal(proxyTmp, NEARD_MGR_SIG_ADP_RM,
-                               DBUS_TYPE_G_OBJECT_PATH, G_TYPE_INVALID);
-       dbus_g_proxy_connect_signal(proxyTmp, NEARD_MGR_SIG_ADP_RM,
-                       G_CALLBACK(neardal_mgr_prv_cb_adapter_removed),
-                                   neardalObj, NULL);
+       g_signal_connect(neardalMgr->proxy,
+                        NEARD_MGR_SIG_ADP_RM,
+                        G_CALLBACK (neardal_mgr_prv_cb_adapter_removed),
+                        neardalMgr);
 
        return errCode;
 }
 
 /******************************************************************************
- * neardal_mgr_release: unref DBus proxy, disconnect Neard Manager signals
+ * neardal_mgr_destroy: unref DBus proxy, disconnect Neard Manager signals
  *****************************************************************************/
-void neardal_mgr_release(neardal_t neardalObj)
+void neardal_mgr_destroy(neardal_t *neardalMgr)
 {
        GList   *node;
-       GList   *tmpList;
+       GList   **tmpList;
 
        NEARDAL_TRACEIN();
        /* Remove all adapters */
-       tmpList = neardalObj->mgrProp.adpList;
-       while (g_list_length(tmpList)) {
-               node = g_list_first(tmpList);
-               neardal_adp_remove(neardalObj, ((AdpProp *)node->data));
-               tmpList = g_list_remove(tmpList, node->data);
+       tmpList = &(*neardalMgr)->prop.adpList;
+       while (g_list_length((*tmpList))) {
+               node = g_list_first((*tmpList));
+               neardal_adp_remove((*neardalMgr), ((AdpProp *)node->data));
        }
-       neardalObj->mgrProp.adpList = tmpList;
+       (*neardalMgr)->prop.adpList = (*tmpList);
 
-       if (neardalObj->mgrProxy == NULL)
+       if ((*neardalMgr)->proxy == NULL)
                return;
 
-       dbus_g_proxy_disconnect_signal(neardalObj->mgrProxy,
-                                      NEARD_MGR_SIG_PROPCHANGED,
+       g_signal_handlers_disconnect_by_func((*neardalMgr)->proxy,
                        G_CALLBACK(neardal_mgr_prv_cb_property_changed),
-                                      NULL);
-       dbus_g_proxy_disconnect_signal(neardalObj->mgrProxy,
-                                      NEARD_MGR_SIG_ADP_ADDED,
+                                               NULL);
+       g_signal_handlers_disconnect_by_func((*neardalMgr)->proxy,
                        G_CALLBACK(neardal_mgr_prv_cb_adapter_added),
-                                      NULL);
-       dbus_g_proxy_disconnect_signal(neardalObj->mgrProxy,
-                                      NEARD_MGR_SIG_ADP_RM,
+                                               NULL);
+       g_signal_handlers_disconnect_by_func((*neardalMgr)->proxy,
                        G_CALLBACK(neardal_mgr_prv_cb_adapter_removed),
-                                      NULL);
-       g_object_unref(neardalObj->mgrProxy);
-       neardalObj->mgrProxy = NULL;
+                                               NULL);
+       g_object_unref((*neardalMgr)->proxy);
+       (*neardalMgr)->proxy = NULL;
+       g_free((*neardalMgr));
+       (*neardalMgr) = NULL;
 }
index 0b9b128..993947d 100644 (file)
@@ -28,29 +28,30 @@ extern "C" {
 #endif /* __cplusplus */
 
 #define NEARD_DBUS_SERVICE                     "org.neard"
+#define NEARD_MGR_PATH                         "/"
 #define NEARD_MGR_IF_NAME                      "org.neard.Manager"
 #define NEARD_MGR_SECTION_ADAPTERS             "Adapters"
-#define NEARD_MGR_SIG_PROPCHANGED              "PropertyChanged"
-#define NEARD_MGR_SIG_ADP_ADDED                        "AdapterAdded"
-#define NEARD_MGR_SIG_ADP_RM                   "AdapterRemoved"
+#define NEARD_MGR_SIG_PROPCHANGED              "property-changed"
+#define NEARD_MGR_SIG_ADP_ADDED                        "adapter-added"
+#define NEARD_MGR_SIG_ADP_RM                   "adapter-removed"
 
 /* NEARDAL Manager Properties */
 typedef struct {
-       GList   *adpList;       /* List of available NEARDAL adapter */
+       GList   *adpList;       /* List of available adapter (AdpProp*) */
 } MgrProp;
 
 /******************************************************************************
  * neardal_mgr_prv_get_adapter: Get NEARDAL Adapter from name
  *****************************************************************************/
-errorCode_t neardal_mgr_prv_get_adapter(neardal_t neardalObj,
+errorCode_t neardal_mgr_prv_get_adapter(neardal_t neardalMgr,
                                             const char *adpName,
                                             AdpProp **adpProp);
 
 /******************************************************************************
  * neardal_mgr_prv_get_adapter_from_proxy: Get NEARDAL Adapter from proxy
  *****************************************************************************/
-errorCode_t neardal_mgr_prv_get_adapter_from_proxy(neardal_t neardalObj,
-                                                       DBusGProxy *adpProxy,
+errorCode_t neardal_mgr_prv_get_adapter_from_proxy(neardal_t neardalMgr,
+                                                       orgNeardAdp *adpProxy,
                                                        AdpProp **adpProp);
 
 /******************************************************************************
@@ -68,16 +69,16 @@ errorCode_t neardal_mgr_prv_get_record(TgtProp *tgtProp,
                                            RcdProp **rcdProp);
 
 /******************************************************************************
- * neardal_mgr_init: Get Neard Manager Properties = NEARDAL Adapters list.
+ * neardal_mgr_create: Get Neard Manager Properties = NEARDAL Adapters list.
  * Create a DBus proxy for the first one NEARDAL adapter if present
  * Register Neard Manager signals ('PropertyChanged')
  *****************************************************************************/
-errorCode_t neardal_mgr_init(neardal_t neardalObj);
+errorCode_t neardal_mgr_create(neardal_t neardalMgr);
 
 /******************************************************************************
- * neardal_mgr_release: unref DBus proxy, disconnect Neard Manager signals
+ * neardal_mgr_destroy: unref DBus proxy, disconnect Neard Manager signals
  *****************************************************************************/
-void neardal_mgr_release(neardal_t neardalObj);
+void neardal_mgr_destroy(neardal_t *neardalMgr);
 
 #ifdef __cplusplus
 }
index 280e96e..9311a15 100644 (file)
@@ -21,6 +21,7 @@
 #ifndef __NEARDAL_PRV_H
 #define __NEARDAL_PRV_H
 
+#include "neard_manager_proxy.h"
 #include "neardal_manager.h"
 #include "neardal_tools.h"
 #include "neardal_traces_prv.h"
@@ -31,48 +32,47 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-/* GType for Dict(string, variant) */
-#define DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH    (dbus_g_type_get_collection( \
-                                               "GPtrArray", \
-                                               DBUS_TYPE_G_OBJECT_PATH))
-
 /* NEARDAL context */
 typedef struct neardalCtx {
-       DBusGConnection *conn;                  /* The DBus connection */
-       DBusGProxy      *mgrProxy;              /* dbus proxy to Neard Mgr */
-       MgrProp         mgrProp;                /* Mgr Properties
-                                               (adapter list) */
+       GDBusConnection *conn;                  /* DBus connection */
+       orgNeardMgr     *proxy;                 /* Neard Mgr dbus proxy */
+       MgrProp         prop;                   /* Mgr Properties
+                                                       (adapter list) */
        adapter_cb      cb_adp_added;           /* Client callback for
-                                               'NEARDAL adapter added' */
-       void            *cb_adp_added_ud;       /* User data for client
-                                               callback 'adapter added'*/
+                                                       'adapter added' */
+       void            *cb_adp_added_ud;       /* User data for
+                                                       client callback
+                                                       'adapter added'*/
        adapter_cb      cb_adp_removed;         /* Client callback for
-                                               'NEARDAL adapter removed' */
-       void            *cb_adp_removed_ud;     /* User data for client
-                                               callback 'adapter removed'*/
+                                                       'adapter removed' */
+       void            *cb_adp_removed_ud;     /* User data for
+                                                       client callback
+                                                       'adapter removed'*/
        adapter_prop_cb cb_adp_prop_changed;    /* Client callback for
                                                'adapter property changed' */
-       void            *cb_adp_prop_changed_ud;/* User data for client callback
+       void            *cb_adp_prop_changed_ud;/* User data for
+                                                       client callback
                                                'adapter property changed' */
 
        target_cb       cb_tgt_found;           /* Client callback for
-                                               'NEARDAL target found' */
-       void            *cb_tgt_found_ud;       /* User data for client callback
-                                               'NEARDAL target found' */
+                                                       'target found' */
+       void            *cb_tgt_found_ud;       /* User data for
+                                                       client callback
+                                                       'target found' */
        target_cb       cb_tgt_lost;            /* Client callback for
-                                               'NEARDAL target lost' */
-       void            *cb_tgt_lost_ud;        /* User data for client callback
-                                               'NEARDAL target lost' */
+                                                       'target lost' */
+       void            *cb_tgt_lost_ud;        /* User data for
+                                                       client callback
+                                                       'target lost' */
 
        record_cb       cb_rcd_found;           /* Client callback for
-                                               'NEARDAL target record found'*/
-       void            *cb_rcd_found_ud;       /* User data for client callback
-                                               'NEARDAL target record found'*/
+                                               '       'target record found'*/
+       void            *cb_rcd_found_ud;       /* User data for
+                                                       client callback
+                                                       'target record found'*/
 
-       errorCode_t     ec;                     /* The last NEARDAL Library
-                                               error code */
-       GError          *gerror;                /* The last GError when
-                                               available */
+       errorCode_t     ec;             /* Lastest NEARDAL error */
+       GError          *gerror;        /* Lastest GError if available */
 } neardalCtx;
 
 #ifdef __cplusplus
index 3c31962..707acff 100644 (file)
 #include <stdio.h>
 #include <string.h>
 #include <glib.h>
-#include <dbus/dbus-glib.h>
 #include <glib-object.h>
-#include "dbus/dbus.h"
 
-#include "neard-record-proxy.h"
+#include "neard_record_proxy.h"
 
 #include "neardal.h"
 #include "neardal_prv.h"
  * neardal_rcd_prv_read_std_properties: Get Neard Record Properties for non
  * smartPoster tag
  *****************************************************************************/
-static errorCode_t neardal_rcd_prv_read_std_properties(GHashTable *rcdHash,
+static errorCode_t neardal_rcd_prv_read_std_properties(GVariant *value,
                                                      RcdProp *rcd)
 {
-       errorCode_t     errCode;
-       char            *tmp    = NULL;
-
-       errCode = neardal_tools_prv_hashtable_get(rcdHash, "Type",
-                                             G_TYPE_STRING, &tmp);
-       if (errCode == NEARDAL_SUCCESS)
-               rcd->type = g_strdup(tmp);
+       errorCode_t     errCode = NEARDAL_SUCCESS;
+       GVariant        *tmpOut = NULL;
 
+       tmpOut = g_variant_lookup_value(value, "Type", G_VARIANT_TYPE_STRING);
+       if (tmpOut != NULL)
+               rcd->type = g_variant_dup_string(tmpOut, NULL);
+       
        if (!strcmp(rcd->type, "Text")) {
-               errCode = neardal_tools_prv_hashtable_get(rcdHash,
-                                                     "Representation",
-                                                     G_TYPE_STRING, &tmp);
-               if (errCode == NEARDAL_SUCCESS)
-                       rcd->representation = g_strdup(tmp);
+               tmpOut = g_variant_lookup_value(value, "Representation",
+                                               G_VARIANT_TYPE_STRING);
+               if (tmpOut != NULL)
+                       rcd->representation = g_variant_dup_string(tmpOut,
+                                                                  NULL);
        }
 
        if (!strcmp(rcd->type, "URI")) {
-               errCode = neardal_tools_prv_hashtable_get(rcdHash, "URI",
-                                                     G_TYPE_STRING, &tmp);
-               if (errCode == NEARDAL_SUCCESS)
-                       rcd->uri = g_strdup(tmp);
+               tmpOut = g_variant_lookup_value(value, "URI",
+                                               G_VARIANT_TYPE_STRING);
+               if (tmpOut != NULL)
+                       rcd->uri = g_variant_dup_string(tmpOut, NULL);
        }
 
        if (!strcmp(rcd->type, "MIME Type (RFC 2046)")) {
-               errCode = neardal_tools_prv_hashtable_get(rcdHash, "MIME",
-                                                     G_TYPE_STRING, &tmp);
-               if (errCode == NEARDAL_SUCCESS)
-                       rcd->mime = g_strdup(tmp);
+               tmpOut = g_variant_lookup_value(value, "MIME",
+                                               G_VARIANT_TYPE_STRING);
+               if (tmpOut != NULL)
+                       rcd->mime = g_variant_dup_string(tmpOut, NULL);
        }
        return errCode;
 }
@@ -75,11 +72,11 @@ static errorCode_t neardal_rcd_prv_read_std_properties(GHashTable *rcdHash,
  * neardal_rcd_prv_read_sp_properties: Get Neard Record Properties
  * for smartPoster tag
  *****************************************************************************/
-static errorCode_t neardal_rcd_prv_read_sp_properties(GHashTable *rcdHash,
+static errorCode_t neardal_rcd_prv_read_sp_properties(GVariant *value,
                                                       RcdProp *rcd)
 {
        /* TODO */
-       (void) rcdHash; /* remove warning */
+       (void) value; /* remove warning */
        (void) rcd; /* remove warning */
 
        return NEARDAL_ERROR_GENERAL_ERROR;
@@ -91,19 +88,17 @@ static errorCode_t neardal_rcd_prv_read_sp_properties(GHashTable *rcdHash,
 static errorCode_t neardal_rcd_prv_read_properties(RcdProp *rcd)
 {
        errorCode_t     errCode         = NEARDAL_SUCCESS;
-       GHashTable      *rcdHash        = NULL;
        GError          *gerror         = NULL;
-       char            *tmp            = NULL;
-       gboolean        dbusCall;
-
+       GVariant        *tmp            = NULL;
+       GVariant        *tmpOut         = NULL;
 
        NEARDAL_TRACEIN();
        g_assert(rcd != NULL);
-       g_assert(rcd->dbusProxy != NULL);
+       g_assert(rcd->proxy != NULL);
 
-       dbusCall = org_neard_Record_get_properties(rcd->dbusProxy, &rcdHash,
-                                                  &gerror);
-       if (dbusCall != TRUE || gerror != NULL) {
+       org_neard_rcd__call_get_properties_sync(rcd->proxy, &tmp, NULL,
+                                               &gerror);
+       if (gerror != NULL) {
                errCode = NEARDAL_ERROR_DBUS;
                NEARDAL_TRACE_ERR(
                        "Unable to read record's properties (%d:%s)\n",
@@ -111,29 +106,29 @@ static errorCode_t neardal_rcd_prv_read_properties(RcdProp *rcd)
                g_error_free(gerror);
                return errCode;
        }
+       NEARDAL_TRACEF("GVariant=%s\n", g_variant_print (tmp, TRUE));
+
+       tmpOut = g_variant_lookup_value(tmp, "Encoding", G_VARIANT_TYPE_STRING);
+       if (tmpOut != NULL)
+               rcd->encoding = g_variant_dup_string(tmpOut, NULL);
+
+       tmpOut = g_variant_lookup_value(tmp, "HandOver", G_VARIANT_TYPE_BOOLEAN);
+       if (tmpOut != NULL)
+               rcd->handOver = g_variant_get_boolean  (tmpOut);
+
+       tmpOut = g_variant_lookup_value(tmp, "Language", G_VARIANT_TYPE_STRING);
+       if (tmpOut != NULL)
+               rcd->language = g_variant_dup_string(tmpOut, NULL);
+
+       tmpOut = g_variant_lookup_value(tmp, "SmartPoster",
+                                       G_VARIANT_TYPE_BOOLEAN);
+       if (tmpOut != NULL)
+               rcd->smartPoster = g_variant_get_boolean  (tmpOut);
 
-       errCode = neardal_tools_prv_hashtable_get(rcdHash, "Encoding",
-                                             G_TYPE_STRING, &tmp);
-       if (errCode == NEARDAL_SUCCESS)
-               rcd->encoding = g_strdup(tmp);
-       errCode = neardal_tools_prv_hashtable_get(rcdHash, "HandOver",
-                                             G_TYPE_BOOLEAN,
-                                             &rcd->handOver);
-       errCode = neardal_tools_prv_hashtable_get(rcdHash, "Language",
-                                             G_TYPE_STRING, &tmp);
-       if (errCode == NEARDAL_SUCCESS)
-               rcd->language = g_strdup(tmp);
-       errCode = neardal_tools_prv_hashtable_get(rcdHash, "SmartPoster",
-                                             G_TYPE_BOOLEAN,
-                                             &rcd->smartPoster);
        if (rcd->smartPoster == FALSE)
-               errCode = neardal_rcd_prv_read_std_properties(rcdHash,
-                                                                 rcd);
+               errCode = neardal_rcd_prv_read_std_properties(tmp, rcd);
        else
-               errCode = neardal_rcd_prv_read_sp_properties(rcdHash,
-                                                                      rcd);
-
-       g_hash_table_destroy(rcdHash);
+               errCode = neardal_rcd_prv_read_sp_properties(tmp, rcd);
 
        return errCode;
 }
@@ -143,46 +138,54 @@ static errorCode_t neardal_rcd_prv_read_properties(RcdProp *rcd)
  * Create a DBus proxy for the first one NFC record if present
  * Register Neard Manager signals ('PropertyChanged')
  *****************************************************************************/
-static errorCode_t neardal_rcd_prv_init(neardal_t neardalObj,
+static errorCode_t neardal_rcd_prv_init(neardal_t neardalMgr,
                                            RcdProp *rcd)
 {
-       errorCode_t     errCode = NEARDAL_SUCCESS;
-
        NEARDAL_TRACEIN();
        g_assert(rcd != NULL);
 
-       if (rcd->dbusProxy != NULL)
-               g_object_unref(rcd->dbusProxy);
-       rcd->dbusProxy = NULL;
-
-       errCode = neardal_tools_prv_create_proxy(neardalObj->conn,
-                                                 &rcd->dbusProxy,
-                                                 rcd->name,
-                                                 NEARD_RECORDS_IF_NAME);
-       if (errCode == NEARDAL_SUCCESS)
-               errCode = neardal_rcd_prv_read_properties(rcd);
-
-       return errCode;
+       if (rcd->proxy != NULL)
+               g_object_unref(rcd->proxy);
+       rcd->proxy = NULL;
+
+       rcd->proxy = org_neard_rcd__proxy_new_sync(neardalMgr->conn,
+                                       G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE,
+                                                       NEARD_DBUS_SERVICE,
+                                                       rcd->name,
+                                                       NULL, /* GCancellable */
+                                                       &neardalMgr->gerror);
+       if (neardalMgr->gerror != NULL) {
+               NEARDAL_TRACE_ERR(
+                       "Unable to create Neard Record Proxy (%d:%s)\n",
+                                neardalMgr->gerror->code,
+                               neardalMgr->gerror->message);
+               neardal_tools_prv_free_gerror(neardalMgr);
+               return NEARDAL_ERROR_DBUS_CANNOT_CREATE_PROXY;
+       }
+       
+       return neardal_rcd_prv_read_properties(rcd);
 }
 
 /******************************************************************************
- * neardal_rcd_release: unref DBus proxy, disconnect Neard Record signals
+ * neardal_rcd_prv_free: unref DBus proxy, disconnect Neard Record signals
  *****************************************************************************/
-static void neardal_rcd_prv_release(RcdProp *rcd)
+static void neardal_rcd_prv_free(RcdProp **rcd)
 {
        NEARDAL_TRACEIN();
-       if (rcd->dbusProxy != NULL)
-               g_object_unref(rcd->dbusProxy);
-       rcd->dbusProxy = NULL;
-       g_free(rcd->name);
-       g_free(rcd->language);
-       g_free(rcd->encoding);
-       g_free(rcd->mime);
-       g_free(rcd->representation);
-       g_free(rcd->type);
-       g_free(rcd->uri);
-       g_free(rcd);
+       if ((*rcd)->proxy != NULL)
+               g_object_unref((*rcd)->proxy);
+       (*rcd)->proxy = NULL;
+       g_free((*rcd)->name);
+       g_free((*rcd)->language);
+       g_free((*rcd)->encoding);
+       g_free((*rcd)->mime);
+       g_free((*rcd)->representation);
+       g_free((*rcd)->type);
+       g_free((*rcd)->uri);
+       g_free((*rcd));
+       (*rcd) = NULL;
 }
+
 /******************************************************************************
  * neardal_rcd_prv_read_std_properties: Insert key/value in a GHashTable for
  * non smartPoster tag
@@ -240,7 +243,7 @@ errorCode_t neardal_rcd_prv_format(GHashTable **hash, RcdProp *rcd)
 
        NEARDAL_TRACEIN();
        g_assert(rcd != NULL);
-       g_assert(rcd->dbusProxy != NULL);
+       g_assert(rcd->proxy != NULL);
 
        if (rcd->smartPoster == FALSE)
                errCode = neardal_rcd_prv_format_std_properties(hash, rcd);
@@ -254,22 +257,22 @@ errorCode_t neardal_rcd_prv_format(GHashTable **hash, RcdProp *rcd)
 /******************************************************************************
  * neardal_get_records: get an array of target records
  *****************************************************************************/
-errorCode_t neardal_get_records(neardal_t neardalObj, char *tgtName,
+errorCode_t neardal_get_records(neardal_t neardalMgr, char *tgtName,
                                 char ***array, int *len)
 {
        errorCode_t     errCode         = NEARDAL_ERROR_NO_RECORD;
        AdpProp         *adpProp        = NULL;
        TgtProp         *tgtProp        = NULL;
-       int             rcdNb           = 0;
+       int             rcdLen          = 0;
        int             ct              = 0;    /* counter */
        char            **rcds          = NULL;
        RcdProp         *rcd            = NULL;
 
 
-       if (neardalObj == NULL || tgtName == NULL || array == NULL)
+       if (neardalMgr == NULL || tgtName == NULL || array == NULL)
                return NEARDAL_ERROR_INVALID_PARAMETER;
 
-       errCode = neardal_mgr_prv_get_adapter(neardalObj, tgtName,
+       errCode = neardal_mgr_prv_get_adapter(neardalMgr, tgtName,
                                                   &adpProp);
        if (errCode != NEARDAL_SUCCESS)
                goto exit;
@@ -279,16 +282,16 @@ errorCode_t neardal_get_records(neardal_t neardalObj, char *tgtName,
                goto exit;
 
        errCode         = NEARDAL_ERROR_NO_RECORD;
-       rcdNb = g_list_length(tgtProp->rcdList);
-       if (rcdNb <= 0)
+       rcdLen = g_list_length(tgtProp->rcdList);
+       if (rcdLen <= 0)
                goto exit;
 
        errCode = NEARDAL_ERROR_NO_MEMORY;
-       rcds = g_try_malloc0((rcdNb + 1) * sizeof(char *));
+       rcds = g_try_malloc0((rcdLen + 1) * sizeof(char *));
        if (rcds == NULL)
                goto exit;
 
-       while (ct < rcdNb) {
+       while (ct < rcdLen) {
                rcd = g_list_nth_data(tgtProp->rcdList, ct);
                if (rcd != NULL)
                        rcds[ct++] = g_strdup(rcd->name);
@@ -297,7 +300,7 @@ errorCode_t neardal_get_records(neardal_t neardalObj, char *tgtName,
 
 exit:
        if (len != NULL)
-               *len = rcdNb;
+               *len = rcdLen;
        *array  = rcds;
 
        return errCode;
@@ -307,51 +310,46 @@ exit:
  * neardal_rcd_add: add new NFC record, initialize DBus Proxy connection,
  * register record signal
  *****************************************************************************/
-errorCode_t neardal_rcd_add(neardal_t neardalObj, char *rcdName)
+errorCode_t neardal_rcd_add(neardal_t neardalMgr, void *parent,
+                           char *rcdName)
 {
        errorCode_t     errCode         = NEARDAL_ERROR_NO_MEMORY;
-       AdpProp         *adpProp        = NULL;
        RcdProp         *rcd    = NULL;
-       TgtProp         *tgtProp        = NULL;
-
-       g_assert(neardalObj != NULL);
+       TgtProp         *tgtProp = parent;
+       
+       g_assert(neardalMgr != NULL);
        g_assert(rcdName != NULL);
+       g_assert(parent != NULL);
 
        NEARDAL_TRACEF("Adding record:%s\n", rcdName);
        rcd = g_try_malloc0(sizeof(RcdProp));
        if (rcd == NULL)
                goto exit;
 
-       rcd->name       = g_strdup(rcdName);
+       rcd->name = g_strdup(rcdName);
        if (rcd->name == NULL)
                goto exit;
 
-       errCode = neardal_rcd_prv_init(neardalObj, rcd);
-       if (errCode != NEARDAL_SUCCESS)
-               goto exit;
-
-       errCode = neardal_mgr_prv_get_adapter(neardalObj, rcdName,
-                                                  &adpProp);
-       if (errCode != NEARDAL_SUCCESS)
-               goto exit;
-
-       errCode = neardal_adp_prv_get_target(adpProp, rcdName, &tgtProp);
+       rcd->parent = tgtProp;
+       
+       tgtProp->rcdList = g_list_prepend(tgtProp->rcdList, (gpointer) rcd);
+       errCode = neardal_rcd_prv_init(neardalMgr, rcd);
        if (errCode != NEARDAL_SUCCESS)
                goto exit;
 
-       tgtProp->rcdList = g_list_prepend(tgtProp->rcdList, (gpointer) rcd);
        NEARDAL_TRACEF("NEARDAL LIB recordList contains %d elements\n",
                      g_list_length(tgtProp->rcdList));
+       
+       if (neardalMgr->cb_rcd_found != NULL)
+               (neardalMgr->cb_rcd_found)(rcdName,
+                                          neardalMgr->cb_rcd_found_ud);
        errCode = NEARDAL_SUCCESS;
 
 exit:
        if (errCode != NEARDAL_SUCCESS) {
-               if (rcd->name != NULL) {
-                       g_free(rcd->name);
-                       rcd->name = NULL;
-               }
-               if (rcd != NULL)
-                       g_free(rcd);
+               tgtProp->rcdList = g_list_remove(tgtProp->rcdList,
+                                                (gpointer) rcd);
+               neardal_rcd_prv_free(&rcd);
        }
 
        return errCode;
@@ -363,10 +361,15 @@ exit:
  *****************************************************************************/
 void neardal_rcd_remove(RcdProp *rcd)
 {
+       TgtProp         *tgtProp;
+       
        NEARDAL_TRACEIN();
        g_assert(rcd != NULL);
 
+       tgtProp = rcd->parent;
        NEARDAL_TRACEF("Removing record:%s\n", rcd->name);
+       tgtProp->rcdList = g_list_remove(tgtProp->rcdList,
+                                        (gconstpointer) rcd);
        /* Remove all records */
-       neardal_rcd_prv_release(rcd);
+       neardal_rcd_prv_free(&rcd);
 }
index b316cce..49508c7 100644 (file)
 #ifndef __NEARDAL_RECORD_H
 #define __NEARDAL_RECORD_H
 
+#include "neard_record_proxy.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
 
 #define NEARD_RECORDS_IF_NAME          "org.neard.Record"
-#define NEARD_TGT_SIG_PROPCHANGED      "PropertyChanged"
 
 /* NEARDAL Record Properties */
 typedef struct {
-       DBusGProxy      *dbusProxy;     /* proxy to Neard NFC Record
-                                       interface */
-       char            *name;          /* DBus interface name
-                                       (as identifier) */
+       orgNeardRcd     *proxy; /* proxy to Neard NFC Record interface */
+       char            *name;  /* DBus interface name (as identifier) */
+       void            *parent; /* parent (target) */
 
        char            *encoding;
        gboolean        handOver;
@@ -50,7 +50,8 @@ typedef struct {
  * neardal_rcd_add: add new NFC record, initialize DBus Proxy connection,
  * register record signal
  *****************************************************************************/
-errorCode_t neardal_rcd_add(neardal_t neardalObj, char *rcdName);
+errorCode_t neardal_rcd_add(neardal_t neardalMgr, void *parent,
+                           char *rcdName);
 
 /******************************************************************************
  * neardal_rcd_remove: remove NFC record, unref DBus Proxy connection,
index a44c0aa..f2e5411 100644 (file)
 #include <stdio.h>
 #include <string.h>
 #include <glib.h>
-#include <dbus/dbus-glib.h>
 #include <glib-object.h>
-#include "dbus/dbus.h"
 
-#include "neard-target-proxy.h"
+#include "neard_target_proxy.h"
 
 #include "neardal.h"
 #include "neardal_prv.h"
  * neardal_tgt_prv_cb_property_changed: Callback called when a NFC target
  * property is changed
  *****************************************************************************/
-static void neardal_tgt_prv_cb_property_changed(DBusGProxy     *proxy,
-                                              const char       *str0,
-                                              GValue           *gvalue,
-                                              void             *user_data)
+static void neardal_tgt_prv_cb_property_changed(orgNeardTgt *proxy,
+                                               const gchar *arg_unnamed_arg0,
+                                               GVariant *arg_unnamed_arg1,
+                                               void            *user_data)
 {
-       GPtrArray       *pathsGpa       = NULL;
-       errorCode_t     errCode         = NEARDAL_ERROR_NO_TARGET;
-       TgtProp         *tgtProp        = NULL;
+       errorCode_t     errCode         = NEARDAL_SUCCESS;
+       TgtProp         *tgtProp        = user_data;
 
        (void) proxy; /* remove warning */
-       (void) user_data; /* remove warning */
+       (void) arg_unnamed_arg1; /* remove warning */
 
        NEARDAL_TRACEIN();
 
-       if (tgtProp == NULL || str0 == NULL)
+       if (tgtProp == NULL || arg_unnamed_arg0 == NULL)
                return;
 
-       NEARDAL_TRACEF("str0='%s'\n", str0);
-       if (!strcmp(str0, "Targets")) {
-               if (!G_VALUE_HOLDS(gvalue, DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH)) {
-                       NEARDAL_TRACE_ERR("Unexpected type: %s",
-                                         G_VALUE_TYPE_NAME(&gvalue));
-                       errCode = NEARDAL_ERROR_DBUS;
-                       return;
-               }
-
-               /* Extract the targets arrays List from the GValue */
-               errCode = NEARDAL_ERROR_NO_TARGET;
-               pathsGpa = g_value_get_boxed(gvalue);
-               if (pathsGpa == NULL)
-                       goto error;
-
-               if (pathsGpa->len <= 0)
-                       goto error;
-
-               /* Getting last target */
-               gvalue = g_ptr_array_index(pathsGpa, pathsGpa->len - 1);
-               if (gvalue != NULL)
-                       errCode = NEARDAL_SUCCESS;
-               else
-                       errCode = NEARDAL_ERROR_NO_TARGET;
-       }
+       NEARDAL_TRACEF("str0='%s'\n", arg_unnamed_arg0);
+       NEARDAL_TRACEF("arg_unnamed_arg1=%s (%s)\n",
+                      g_variant_print (arg_unnamed_arg1, TRUE),
+                      g_variant_get_type_string(arg_unnamed_arg1));
 
-       return;
-
-error:
-       if (errCode != NEARDAL_SUCCESS) {
-               NEARDAL_TRACE_ERR("Exit with error code %d:%s\n", errCode,
-                               neardal_error_get_text(errCode));
-               if (pathsGpa != NULL)
-                       g_boxed_free(G_TYPE_STRV, pathsGpa);
-       }
+       NEARDAL_TRACE_ERR("Exit with error code %d:%s\n", errCode,
+                         neardal_error_get_text(errCode));
 
        return;
 }
@@ -99,18 +68,19 @@ error:
  *****************************************************************************/
 static errorCode_t neardal_tgt_prv_read_properties(TgtProp *tgtProp)
 {
-       errorCode_t     errCode                 = NEARDAL_SUCCESS;
-       GHashTable      *neardTargetPropHash    = NULL;
-       GError          *gerror                 = NULL;
-       void            *tmp                    = NULL;
+       errorCode_t     errCode         = NEARDAL_SUCCESS;
+       GError          *gerror         = NULL;
+       GVariant        *tmp            = NULL;
+       GVariant        *tmpOut         = NULL;
+       gsize           len;
+       gchar           **rcdArray      = NULL;
 
        NEARDAL_TRACEIN();
        g_assert(tgtProp != NULL);
-       g_assert(tgtProp->dbusProxy != NULL);
+       g_assert(tgtProp->proxy != NULL);
 
-       org_neard_Target_get_properties(tgtProp->dbusProxy,
-                                       &neardTargetPropHash,
-                                       &gerror);
+       org_neard_tgt__call_get_properties_sync(tgtProp->proxy, &tmp, NULL,
+                                               &gerror);
        if (gerror != NULL) {
                errCode = NEARDAL_ERROR_DBUS_CANNOT_INVOKE_METHOD;
                NEARDAL_TRACE_ERR(
@@ -119,32 +89,49 @@ static errorCode_t neardal_tgt_prv_read_properties(TgtProp *tgtProp)
                g_error_free(gerror);
                goto exit;
        }
+       NEARDAL_TRACEF("GVariant=%s\n", g_variant_print (tmp, TRUE));
+
+       tmpOut = g_variant_lookup_value(tmp, "Records", G_VARIANT_TYPE_ARRAY);
+       if (tmpOut != NULL) {
+               rcdArray = g_variant_dup_objv (tmpOut, &len);
+               tgtProp->rcdLen = len;
+               if (len == 0) {
+                       g_strfreev(rcdArray);
+                       rcdArray = NULL;
+               } else {
+                       guint len = 0;
+                       char *rcdName;
+                       AdpProp *adpProp;
+                       neardal_t neardalMgr;
+
+                       adpProp = tgtProp->parent;
+                       neardalMgr = adpProp->parent;
+                       while (len < tgtProp->rcdLen && 
+                               errCode == NEARDAL_SUCCESS) {
+                               rcdName = rcdArray[len++];
+                               errCode = neardal_rcd_add(neardalMgr, tgtProp,
+                                                       rcdName);
+                       }
+               }
+       }
 
-       errCode = neardal_tools_prv_hashtable_get(neardTargetPropHash,
-                                                  "Records",
-                                           DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH,
-                                           &tmp);
-       if (errCode == NEARDAL_SUCCESS)
-               neardal_tools_prv_g_ptr_array_copy(&tgtProp->rcdArray, tmp);
-
-       errCode = neardal_tools_prv_hashtable_get(neardTargetPropHash,
-                                                  "TagType",
-                                                   G_TYPE_STRV, &tmp);
-       if (errCode == NEARDAL_SUCCESS)
-               tgtProp->tagType = g_boxed_copy(G_TYPE_STRV, tmp);
-
-       errCode = neardal_tools_prv_hashtable_get(neardTargetPropHash, "Type",
-                                                  G_TYPE_STRING, &tmp);
-       if (errCode == NEARDAL_SUCCESS)
-               tgtProp->type = g_strdup(tmp);
+       tmpOut = g_variant_lookup_value(tmp, "TagType", G_VARIANT_TYPE_ARRAY);
+       if (tmpOut != NULL) {
+               tgtProp->tagsType = g_variant_dup_strv (tmpOut, &len);
+               tgtProp->tagsTypeLen = len;
+               if (len == 0) {
+                       g_strfreev(tgtProp->tagsType);
+                       tgtProp->tagsType = NULL;
+               }
+       }
 
-       errCode = neardal_tools_prv_hashtable_get(neardTargetPropHash,
-                                                  "ReadOnly", G_TYPE_BOOLEAN,
-                                                  &tmp);
-       if (errCode == NEARDAL_SUCCESS)
-               tgtProp->readOnly = (gboolean) tmp;
+       tmpOut = g_variant_lookup_value(tmp, "Type", G_VARIANT_TYPE_STRING);
+       if (tmpOut != NULL)
+               tgtProp->type = g_variant_dup_string(tmpOut, NULL);
 
-       g_hash_table_destroy(neardTargetPropHash);
+       tmpOut = g_variant_lookup_value(tmp, "ReadOnly", G_VARIANT_TYPE_BOOLEAN);
+       if (tmpOut != NULL)
+               tgtProp->readOnly = g_variant_get_boolean  (tmpOut);
 
 exit:
        return errCode;
@@ -155,97 +142,75 @@ exit:
  * Create a DBus proxy for the first one NFC target if present
  * Register Neard Manager signals ('PropertyChanged')
  *****************************************************************************/
-static errorCode_t neardal_tgt_prv_init(neardal_t neardalObj,
+static errorCode_t neardal_tgt_prv_init(neardal_t neardalMgr,
                                            TgtProp *tgtProp)
 {
        errorCode_t     errCode = NEARDAL_SUCCESS;
-       guint           len = 0;
-       char            *rcdName;
 
        NEARDAL_TRACEIN();
        g_assert(tgtProp != NULL);
 
-       if (tgtProp->dbusProxy != NULL) {
-               dbus_g_proxy_disconnect_signal(tgtProp->dbusProxy,
-                                              NEARD_TGT_SIG_PROPCHANGED,
-                       G_CALLBACK(neardal_tgt_prv_cb_property_changed),
-                                              NULL);
-               g_object_unref(tgtProp->dbusProxy);
+       if (tgtProp->proxy != NULL) {
+               g_signal_handlers_disconnect_by_func(tgtProp->proxy,
+                               G_CALLBACK(neardal_tgt_prv_cb_property_changed),
+                                                    NULL);
+               g_object_unref(tgtProp->proxy);
+               tgtProp->proxy = NULL;
+       }
+       tgtProp->proxy = NULL;
+
+       tgtProp->proxy = org_neard_tgt__proxy_new_sync(neardalMgr->conn,
+                                       G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE,
+                                                       NEARD_DBUS_SERVICE,
+                                                       tgtProp->name,
+                                                       NULL, /* GCancellable */
+                                                       &neardalMgr->gerror);
+       if (neardalMgr->gerror != NULL) {
+               NEARDAL_TRACE_ERR(
+                       "Unable to create Neard Target Proxy (%d:%s)\n",
+                                 neardalMgr->gerror->code,
+                                 neardalMgr->gerror->message);
+               neardal_tools_prv_free_gerror(neardalMgr);
+               return NEARDAL_ERROR_DBUS_CANNOT_CREATE_PROXY;
        }
-       tgtProp->dbusProxy = NULL;
-
-       errCode = neardal_tools_prv_create_proxy(neardalObj->conn,
-                                                 &tgtProp->dbusProxy,
-                                                 tgtProp->name,
-                                                 NEARD_TARGETS_IF_NAME);
-       if (errCode != NEARDAL_SUCCESS)
-               return errCode;
 
        /* Populate Target datas... */
        errCode = neardal_tgt_prv_read_properties(tgtProp);
        if (errCode != NEARDAL_SUCCESS)
                return errCode;
 
-       if (tgtProp->rcdArray == NULL)
-               return NEARDAL_ERROR_GENERAL_ERROR;
-
-       if (tgtProp->rcdArray->len <= 0)
-               return NEARDAL_ERROR_NO_TARGET;
-
-       len = 0;
-       while (len < tgtProp->rcdArray->len && errCode == NEARDAL_SUCCESS) {
-               rcdName = tgtProp->rcdArray->pdata[len];
-               errCode = neardal_rcd_add(neardalObj, rcdName);
-               if (errCode == NEARDAL_SUCCESS &&
-                       neardalObj->cb_tgt_found != NULL)
-                       (neardalObj->cb_tgt_found)(tgtProp->name,
-                                              neardalObj->cb_tgt_found_ud);
-               if (neardalObj->cb_rcd_found != NULL)
-                       (neardalObj->cb_rcd_found)(rcdName,
-                                              neardalObj->cb_rcd_found_ud);
-               len++;
-       }
-
-       /* Register Marshaller for signals (String,Variant) */
-       dbus_g_object_register_marshaller(neardal_marshal_VOID__STRING_BOXED,
-                                          G_TYPE_NONE, G_TYPE_STRING,
-                                          G_TYPE_VALUE, G_TYPE_INVALID);
-
        NEARDAL_TRACEF("Register Neard-Target Signal 'PropertyChanged'\n");
-       dbus_g_proxy_add_signal(tgtProp->dbusProxy, NEARD_TGT_SIG_PROPCHANGED,
-                                G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID);
-       dbus_g_proxy_connect_signal(tgtProp->dbusProxy,
-                                   NEARD_TGT_SIG_PROPCHANGED,
-                         G_CALLBACK(neardal_tgt_prv_cb_property_changed),
-                                   neardalObj, NULL);
+       g_signal_connect(tgtProp->proxy, NEARD_TGT_SIG_PROPCHANGED,
+                       G_CALLBACK (neardal_tgt_prv_cb_property_changed),
+                         tgtProp);
 
        return errCode;
 }
 
 /******************************************************************************
- * neardal_tgt_release: unref DBus proxy, disconnect Neard Target signals
+ * neardal_tgt_prv_free: unref DBus proxy, disconnect Neard Target signals
  *****************************************************************************/
-static void neardal_tgt_prv_release(TgtProp *tgtProp)
+static void neardal_tgt_prv_free(TgtProp **tgtProp)
 {
        NEARDAL_TRACEIN();
-       if (tgtProp->dbusProxy != NULL) {
-               dbus_g_proxy_disconnect_signal(tgtProp->dbusProxy,
-                                              NEARD_TGT_SIG_PROPCHANGED,
-                       G_CALLBACK(neardal_tgt_prv_cb_property_changed),
-                                              NULL);
-               g_object_unref(tgtProp->dbusProxy);
-               tgtProp->dbusProxy = NULL;
+       if ((*tgtProp)->proxy != NULL) {
+               g_signal_handlers_disconnect_by_func((*tgtProp)->proxy,
+                               G_CALLBACK(neardal_tgt_prv_cb_property_changed),
+                                                    NULL);
+               g_object_unref((*tgtProp)->proxy);
+               (*tgtProp)->proxy = NULL;
        }
-       g_free(tgtProp->name);
-       g_free(tgtProp->type);
-       neardal_tools_prv_g_ptr_array_free(tgtProp->rcdArray);
-       g_boxed_free(G_TYPE_STRV, tgtProp->tagType);
+       g_free((*tgtProp)->name);
+       g_free((*tgtProp)->type);
+       g_strfreev((*tgtProp)->tagsType);
+       g_free((*tgtProp));
+       (*tgtProp) = NULL;
 }
 
 /******************************************************************************
  * neardal_get_targets: get an array of NFC targets present
  *****************************************************************************/
-errorCode_t neardal_get_targets(neardal_t neardalObj, char *adpName,
+errorCode_t neardal_get_targets(neardal_t neardalMgr, char *adpName,
                                 char ***array, int *len)
 {
        errorCode_t     errCode         = NEARDAL_ERROR_NO_TARGET;
@@ -256,10 +221,10 @@ errorCode_t neardal_get_targets(neardal_t neardalObj, char *adpName,
        TgtProp         *target         = NULL;
 
 
-       if (neardalObj == NULL || adpName == NULL || array == NULL)
+       if (neardalMgr == NULL || adpName == NULL || array == NULL)
                return NEARDAL_ERROR_INVALID_PARAMETER;
 
-       errCode = neardal_mgr_prv_get_adapter(neardalObj, adpName,
+       errCode = neardal_mgr_prv_get_adapter(neardalMgr, adpName,
                                                   &adpProp);
        if (errCode != NEARDAL_SUCCESS)
                return errCode;
@@ -292,13 +257,14 @@ errorCode_t neardal_get_targets(neardal_t neardalObj, char *adpName,
  * neardal_tgt_add: add new NFC target, initialize DBus Proxy connection,
  * register target signal
  *****************************************************************************/
-errorCode_t neardal_tgt_add(neardal_t neardalObj, char *tgtName)
+errorCode_t neardal_tgt_add(neardal_t neardalMgr, void * parent,
+                           gchar *tgtName)
 {
        errorCode_t     errCode         = NEARDAL_ERROR_NO_MEMORY;
        TgtProp         *tgtProp        = NULL;
-       AdpProp         *adpProp;
+       AdpProp         *adpProp        = parent;
 
-       g_assert(neardalObj != NULL);
+       g_assert(neardalMgr != NULL);
        g_assert(tgtName != NULL);
 
        NEARDAL_TRACEF("Adding target:%s\n", tgtName);
@@ -307,20 +273,17 @@ errorCode_t neardal_tgt_add(neardal_t neardalObj, char *tgtName)
                goto error;
 
        tgtProp->name   = g_strdup(tgtName);
-       errCode = neardal_mgr_prv_get_adapter(neardalObj, tgtName,
-                                                  &adpProp);
-       if (errCode != NEARDAL_SUCCESS)
-               goto error;
+       tgtProp->parent = adpProp;
 
        adpProp->tgtList = g_list_prepend(adpProp->tgtList, tgtProp);
-       errCode = neardal_tgt_prv_init(neardalObj, tgtProp);
-       if (errCode != NEARDAL_SUCCESS) {
-               adpProp->tgtList = g_list_remove(adpProp->tgtList, tgtProp);
-               goto error;
-       }
+       errCode = neardal_tgt_prv_init(neardalMgr, tgtProp);
 
        NEARDAL_TRACEF("NEARDAL LIB targetList contains %d elements\n",
                      g_list_length(adpProp->tgtList));
+       
+       if (neardalMgr->cb_tgt_found != NULL)
+               (neardalMgr->cb_tgt_found)(tgtProp->name,
+                                          neardalMgr->cb_tgt_found_ud);
 
        return errCode;
 
@@ -334,13 +297,14 @@ error:
 }
 
 /******************************************************************************
- * neardal_tgt_remove: remove NFC target, unref DBus Proxy connection,
+ * neardal_tgt_remove: remove one NFC target, unref DBus Proxy connection,
  * unregister target signal
  *****************************************************************************/
 void neardal_tgt_remove(TgtProp *tgtProp)
 {
        RcdProp         *rcdProp        = NULL;
        GList           *node;
+       AdpProp         *adpProp;
 
        g_assert(tgtProp != NULL);
 
@@ -349,9 +313,11 @@ void neardal_tgt_remove(TgtProp *tgtProp)
        while (g_list_length(tgtProp->rcdList)) {
                node = g_list_first(tgtProp->rcdList);
                rcdProp = (RcdProp *) node->data;
-               tgtProp->rcdList = g_list_remove(tgtProp->rcdList,
-                                                (gconstpointer) rcdProp);
                neardal_rcd_remove(rcdProp);
        }
-       neardal_tgt_prv_release(tgtProp);
+       adpProp = tgtProp->parent;
+       adpProp->tgtList = g_list_remove(adpProp->tgtList,
+                                        (gconstpointer) tgtProp);
+       
+       neardal_tgt_prv_free(&tgtProp);
 }
index 73a111e..10e8e58 100644 (file)
 #ifndef __NEARDAL_TARGET_H
 #define __NEARDAL_TARGET_H
 
+#include "neard_target_proxy.h"
 #include "neardal_record.h"
-#include <glib-2.0/glib/glist.h>
+// #include <glib-2.0/glib/gtypes.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
 
 #define NEARD_TARGETS_IF_NAME          "org.neard.Target"
-#define NEARD_TGT_SIG_PROPCHANGED      "PropertyChanged"
+#define NEARD_TGT_SIG_PROPCHANGED      "property-changed"
 
 /* NEARDAL Target Properties */
 typedef struct {
-       DBusGProxy      *dbusProxy;     /* proxy to Neard NEARDAL Target
+       orgNeardTgt     *proxy;         /* proxy to Neard NEARDAL Target
                                        interface */
        char            *name;          /* DBus interface name
                                        (as identifier) */
-       GPtrArray       *rcdArray;      /* temporary storage */
+       void            *parent;        /* parent (adapter ) */
+       
+       gchar           *type;
+       
+       gsize           rcdLen;
        GList           *rcdList;       /* target's records paths */
-       char            **tagType;      /* array of tag types */
-       char            *type;
+       
+       gchar           **tagsType;     /* array of tag types */
+       gsize           tagsTypeLen;
        gboolean        readOnly;       /* Read-Only flag */
 } TgtProp;
 
@@ -48,7 +54,8 @@ typedef struct {
  * neardal_tgt_add: add new NEARDAL target, initialize DBus Proxy connection,
  * register target signal
  *****************************************************************************/
-errorCode_t neardal_tgt_add(neardal_t neardalObj, char *tgtName);
+errorCode_t neardal_tgt_add(neardal_t neardalMgr, void *parent,
+                           gchar *tgtName);
 
 /******************************************************************************
  * neardal_tgt_remove: remove NEARDAL target, unref DBus Proxy connection,
index 34a9db0..b554f8a 100644 (file)
 #include <stdio.h>
 #include <string.h>
 #include <glib.h>
-#include <dbus/dbus-glib.h>
 #include <glib-object.h>
-#include "dbus/dbus.h"
 
-#include "neard-manager-proxy.h"
-#include "neard-adapter-proxy.h"
+#include "neard_manager_proxy.h"
+#include "neard_adapter_proxy.h"
 
 #include "neardal.h"
 #include "neardal_prv.h"
@@ -74,80 +72,43 @@ typedef void (*GMarshalFunc_VOID__STRING_BOXED)(gpointer data1, gpointer arg_1,
 /******************************************************************************
  * neardal_tools_prv__g_ptr_array_copy: duplicate a 'GPtrArray' array
  *****************************************************************************/
-static void neardal_tools_g_ptr_array_add(gpointer data, gpointer array)
-{
-       char *tmp;
-       tmp = g_strdup(data);
-       g_ptr_array_add(array, tmp);
-}
-void neardal_tools_prv_g_ptr_array_copy(GPtrArray **target, GPtrArray *source)
-{
-       if (*target == NULL)
-               *target = g_ptr_array_sized_new(source->len);
-       g_ptr_array_foreach(source, neardal_tools_g_ptr_array_add, *target);
-}
+// static void neardal_tools_g_ptr_array_add(gpointer data, gpointer array)
+// {
+//     char *tmp;
+//     tmp = g_strdup(data);
+//     g_ptr_array_add(array, tmp);
+// }
+// void neardal_tools_prv_array_copy(gchar ***target, gchar **source)
+// {
+//     if (*target == NULL)
+//             *target = g_ptr_array_sized_new(source->len);
+//     g_ptr_array_foreach(source, neardal_tools_g_ptr_array_add, *target);
+// }
 
 /******************************************************************************
  * neardal_tools_prv_g_ptr_array_free: free a 'GPtrArray' array
  *****************************************************************************/
-static void neardal_tools_g_ptr_array_free_node(gpointer data, gpointer array)
-{
-       (void) array; /* remove warning */
-       g_free(data);
-}
-void neardal_tools_prv_g_ptr_array_free(GPtrArray *array)
-{
-       g_ptr_array_foreach(array, neardal_tools_g_ptr_array_free_node, NULL);
-       g_ptr_array_free(array, TRUE);
-}
-
-/******************************************************************************
- * neardal_tools_prv_create_proxy: create dbus proxy to Neard daemon
- *****************************************************************************/
-errorCode_t neardal_tools_prv_create_proxy(DBusGConnection *conn,
-                                      DBusGProxy **oProxy, const char *path,
-                                      const char *iface)
-{
-       DBusGProxy      *proxy  = NULL;
-       GError          *gerror = NULL;
-
-       g_assert(conn != NULL);
-       g_assert(oProxy != NULL);
-       g_assert(path != NULL);
-       g_assert(iface != NULL);
-
-       NEARDAL_TRACEIN();
-       NEARDAL_TRACEF("Trying connection to (path:'%s', interface:'%s')...\n",
-                     path, iface);
-       proxy = dbus_g_proxy_new_for_name_owner(conn, NEARD_DBUS_SERVICE, path,
-                                               iface, &gerror);
-       if (proxy == NULL) {
-               NEARDAL_TRACE_ERR(
-               "Unable to connect to (path:'%s', interface:'%s') (err:'%s')\n",
-                                path, iface, gerror->message);
-               g_error_free(gerror);
-               return NEARDAL_ERROR_DBUS_CANNOT_CREATE_PROXY;
-       }
-       NEARDAL_TRACEF("Connection to (path:'%s', interface:'%s') OK!\n", path,
-                     iface);
-/*TODO g_signal_connect (G_OBJECT (proxy), "destroy",
- *                     G_CALLBACK(destroy_signal), proxy); */
-
-       *oProxy = proxy;
-
-       return NEARDAL_SUCCESS;
-}
+// static void neardal_tools_g_ptr_array_free_node(gpointer data, gpointer array)
+// {
+//     (void) array; /* remove warning */
+//     g_free(data);
+// }
+// void neardal_tools_prv_g_ptr_array_free(GPtrArray *array)
+// {
+//     g_ptr_array_foreach(array, neardal_tools_g_ptr_array_free_node, NULL);
+//     g_ptr_array_free(array, TRUE);
+// }
 
 /******************************************************************************
  * neardal_tools_prv_free_gerror: freeing gerror in neardal context
  *****************************************************************************/
-void neardal_tools_prv_free_gerror(neardal_t neardalObj)
+void neardal_tools_prv_free_gerror(neardal_t neardalMgr)
 {
-       g_assert(neardalObj != NULL);
+       g_assert(neardalMgr != NULL);
 
-       if (neardalObj->gerror != NULL)
-               g_error_free(neardalObj->gerror);
-       neardalObj->gerror = NULL;
+       if (neardalMgr->gerror != NULL)
+               g_error_free(neardalMgr->gerror);
+       neardalMgr->gerror = NULL;
 }
 
 /******************************************************************************
@@ -185,102 +146,6 @@ int neardal_tools_prv_cmp_path(const char *neardalPath, const char *reqPath)
        return ret;
 }
 
-
-/******************************************************************************
- * neardal_tools_prv_hashtable_get: Parse a hashtable and get value of GType
- * 'type' with a specific key
- *****************************************************************************/
-errorCode_t neardal_tools_prv_hashtable_get(GHashTable *hashTable,
-                                       gconstpointer key, GType gtype,
-                                       void *value)
-{
-       gpointer        valueGp = NULL;
-       errorCode_t     errCode = NEARDAL_ERROR_GENERAL_ERROR;
-       gboolean        found;
-
-       NEARDAL_TRACEF("key'%s'=", key);
-       found = g_hash_table_lookup_extended(hashTable, key, NULL, &valueGp);
-       if (found == FALSE) {
-               NEARDAL_TRACE_ERR("key '%s' NOT FOUND!!!\n", key);
-               return errCode;
-       }
-
-       if (valueGp == NULL)
-               goto error;
-
-       if (G_VALUE_HOLDS(valueGp, gtype) != TRUE) {
-               NEARDAL_TRACE_ERR(
-               "Unknown GType (waiting 0x%X='%s' instead of 0x%X='%s')",
-                                gtype, g_type_name(gtype),
-                               G_VALUE_TYPE(valueGp),
-                                g_type_name(G_VALUE_TYPE(valueGp)));
-               goto error;
-       }
-
-       if (value == NULL)
-               goto error;
-
-       switch (gtype) {
-       case G_TYPE_BOOLEAN:
-               *((gboolean *)value) = g_value_get_boolean(valueGp);
-               NEARDAL_TRACE("(boolean) %d", *(gboolean *)value);
-               errCode = NEARDAL_SUCCESS;
-               break;
-       case G_TYPE_STRING:
-               *((const gchar * *)value) = g_value_get_string(valueGp);
-               NEARDAL_TRACE("(string) %s", *(const gchar * *)value);
-               errCode = NEARDAL_SUCCESS;
-               break;
-       default:
-               if (gtype == G_TYPE_STRV) {
-                       void *tmp;
-
-                       tmp = g_value_get_boxed(valueGp);
-                       *((gchar ***)value) = tmp;
-                       NEARDAL_TRACE("(array of strings, first string =) %s",
-                                       ((gchar **) tmp)[0]);
-                       errCode = NEARDAL_SUCCESS;
-                       break;
-               }
-               if (gtype == DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH) {
-                       GPtrArray       *tmp = NULL;
-                       tmp = g_value_get_boxed(valueGp);
-
-                       errCode = NEARDAL_ERROR_GENERAL_ERROR;
-                       if (tmp == NULL)
-                               break;
-
-                       NEARDAL_TRACE("(array of DBusGObjectPath: ");
-                       if (tmp->len > 0)
-                               NEARDAL_TRACE(
-                                       "%d elements, first path=%s)",
-                                       tmp->len,
-                                       g_ptr_array_index(tmp, 0));
-                       else
-                               NEARDAL_TRACE(" (Empty!)");
-                       *((GPtrArray **)value) = tmp;
-                       errCode = NEARDAL_SUCCESS;
-                       break;
-               }
-
-               NEARDAL_TRACE_ERR(
-               "Unknown GType (waiting 0x%X='%s' instead of 0x%X='%s')",
-                                       gtype, g_type_name(gtype),
-                                       G_VALUE_TYPE(valueGp),
-                                       g_type_name(G_VALUE_TYPE(valueGp)));
-               break;
-       }
-
-       NEARDAL_TRACE("\n");
-
-       return errCode;
-
-error:
-       NEARDAL_TRACE_ERR("key '%s' NOT FOUND!!!\n", key);
-       return errCode;
-
-}
-
 /******************************************************************************
  * neardal_tools_create_dict: Create a GHashTable for dict_entries.
  *****************************************************************************/
index 385d197..2bbfb5a 100644 (file)
@@ -29,7 +29,7 @@ extern "C" {
 /******************************************************************************
  * neardal_tools_prv_free_gerror: freeing gerror in neardal context
  *****************************************************************************/
-void neardal_tools_prv_free_gerror(neardal_t neardalObj);
+void neardal_tools_prv_free_gerror(neardal_t neardalMgr);
 
 /******************************************************************************
  * neardal_tools_prv_cmp_path: Compare dbus path.
@@ -38,42 +38,6 @@ void neardal_tools_prv_free_gerror(neardal_t neardalObj);
 int neardal_tools_prv_cmp_path(const char *neardalPath, const char *reqPath);
 
 /******************************************************************************
- * neardal_tools_prv_hashtable_get: Parse a hashtable and get value of GType
- * 'type' with a specific key
- *****************************************************************************/
-errorCode_t neardal_tools_prv_hashtable_get(GHashTable *hashTable,
-                                       gconstpointer key, GType gtype,
-                                       void *value);
-
-/******************************************************************************
- * neardal_tools_prv_create_proxy: create dbus proxy to Neard daemon
- *****************************************************************************/
-errorCode_t neardal_tools_prv_create_proxy(DBusGConnection *conn,
-                                      DBusGProxy **oProxy, const char *path,
-                                      const char *iface);
-
-/******************************************************************************
- * neardal_marshal_VOID__STRING_BOXED: marshaller function for signal
- * invocations
- *****************************************************************************/
-void neardal_marshal_VOID__STRING_BOXED(GClosure       *closure,
-                                        GValue         *return_value,
-                                        guint          n_param_values,
-                                        const GValue   *param_values,
-                                        gpointer       invocation_hint,
-                                        gpointer       marshal_data);
-
-/******************************************************************************
- * neardal_tools_prv__g_ptr_array_copy: duplicate a 'GPtrArray' array
- *****************************************************************************/
-void neardal_tools_prv_g_ptr_array_copy(GPtrArray **target, GPtrArray *source);
-
-/******************************************************************************
- * neardal_tools_prv_g_ptr_array_free: free a 'GPtrArray' array
- *****************************************************************************/
-void neardal_tools_prv_g_ptr_array_free(GPtrArray *array);
-
-/******************************************************************************
  * neardal_tools_create_dict: Create a GHashTable for dict_entries.
  *****************************************************************************/
 GHashTable *neardal_tools_create_dict(void);
index 524088e..29a1864 100644 (file)
@@ -136,10 +136,15 @@ NCLError ncl_cmd_list(int argc, char *argv[])
 
        ncl_cmd_print(stdout, "\nCommand line list\n");
        for (index = 0; index < nbCmd; index++) {
+       if (0) { /* TODO: Remove */
                snprintf(funcName, sizeof(funcName), "%40s",
                         itFunc[index].cmdName);
                ncl_cmd_print(stdout, "%s :\t%s\n", funcName,
                              itFunc[index].helpStr);
+       } else {
+               ncl_cmd_print(stdout, "%s :\n\t%s\n\n", itFunc[index].cmdName,
+                             itFunc[index].helpStr);
+       }
        }
 
        return 0;
@@ -203,7 +208,7 @@ static void ncl_cmd_prv_dump_target(neardal_target target)
        NCL_CMD_PRINT(".. Type:\t\t'%s'\n", target.type);
 
        NCL_CMD_PRINT(".. Number of 'Tag Type':%d\n", target.nbTagTypes);
-       tagTypes = target.tagType;
+       tagTypes = target.tagsType;
        if (target.nbTagTypes > 0) {
                NCL_CMD_PRINT(".. Tags type[]:\t\t");
                while ((*tagTypes) != NULL) {
@@ -211,7 +216,7 @@ static void ncl_cmd_prv_dump_target(neardal_target target)
                        tagTypes++;
                }
                NCL_CMD_PRINT("\n");
-               neardal_free_array(&target.tagType);
+               neardal_free_array(&target.tagsType);
        }
 
        records = target.records;
@@ -258,12 +263,12 @@ static void ncl_cmd_prv_dump_record(neardal_record record)
  *****************************************************************************/
 static void ncl_cmd_cb_adapter_added(const char *adpName, void *user_data)
 {
-       neardal_t       neardalObj = user_data;
+       neardal_t       neardalMgr = user_data;
        errorCode_t     ec;
        neardal_adapter adapter;
 
        NCL_CMD_PRINTF("NFC Adapter added '%s'\n", adpName);
-       ec = neardal_get_adapter_properties(neardalObj, adpName, &adapter);
+       ec = neardal_get_adapter_properties(neardalMgr, adpName, &adapter);
        if (ec == NEARDAL_SUCCESS)
                ncl_cmd_prv_dump_adapter(adapter);
        else
@@ -276,9 +281,9 @@ static void ncl_cmd_cb_adapter_added(const char *adpName, void *user_data)
 
 static void ncl_cmd_cb_adapter_removed(const char *adpName, void * user_data)
 {
-       neardal_t       neardalObj = user_data;
+       neardal_t       neardalMgr = user_data;
 
-       (void) neardalObj;
+       (void) neardalMgr;
 
        NCL_CMD_PRINTF("NFC Adapter removed '%s'\n", adpName);
 }
@@ -286,10 +291,10 @@ static void ncl_cmd_cb_adapter_removed(const char *adpName, void * user_data)
 static void ncl_cmd_cb_adapter_prop_changed(char *adpName, char *propName,
                                            void *value, void *user_data)
 {
-       neardal_t       neardalObj = user_data;
+       neardal_t       neardalMgr = user_data;
        int             polling;
 
-       (void) neardalObj;
+       (void) neardalMgr;
        if (!strcmp(propName, "Polling")) {
                polling = (int)value;
                NCL_CMD_PRINTF("Polling=%d\n", polling);
@@ -302,13 +307,13 @@ static void ncl_cmd_cb_adapter_prop_changed(char *adpName, char *propName,
 
 static void ncl_cmd_cb_target_found(const char *tgtName, void *user_data)
 {
-       neardal_t       neardalObj = user_data;
+       neardal_t       neardalMgr = user_data;
        neardal_target  target;
        errorCode_t     ec;
 
        NCL_CMD_PRINTF("NFC Target found (%s)\n", tgtName);
 
-       ec = neardal_get_target_properties(neardalObj, tgtName, &target);
+       ec = neardal_get_target_properties(neardalMgr, tgtName, &target);
        if (ec == NEARDAL_SUCCESS)
                ncl_cmd_prv_dump_target(target);
        else
@@ -320,26 +325,26 @@ static void ncl_cmd_cb_target_found(const char *tgtName, void *user_data)
 
 static void ncl_cmd_cb_target_lost(const char *tgtName, void *user_data)
 {
-       neardal_t       neardalObj = user_data;
+       neardal_t       neardalMgr = user_data;
 
        NCL_CMD_PRINTF("NFC Target lost (%s)\n", tgtName);
-       (void) neardalObj;
+       (void) neardalMgr;
 
 }
 
 static void ncl_cmd_cb_record_found(const char *rcdName, void *user_data)
 {
-       neardal_t       neardalObj = user_data;
+       neardal_t       neardalMgr = user_data;
        errorCode_t     ec;
        neardal_record  record;
 
        NCL_CMD_PRINTF("Target Record found (%s)\n", rcdName);
-       ec = neardal_get_record_properties(neardalObj, rcdName, &record);
+       ec = neardal_get_record_properties(neardalMgr, rcdName, &record);
        if (ec == NEARDAL_SUCCESS) {
                ncl_cmd_prv_dump_record(record);
 /*             NCL_CMD_PRINTF("(Re)Start Poll\n");
                sleep(1);
-               neardal_start_poll(neardalObj, (char *) rcdName, NULL); */
+               neardal_start_poll(neardalMgr, (char *) rcdName, NULL); */
        } else
                NCL_CMD_PRINTF("Read record error. (error:%d='%s').\n", ec,
                               neardal_error_get_text(ec));
@@ -356,8 +361,8 @@ static NCLError ncl_cmd_neardal_construct(int argc, char *argv[])
        (void) argv; /* remove warning */
 
        /* Construct NEARDAL object */
-       sNclCmdCtx.neardalObj = neardal_construct(&ec);
-       if (sNclCmdCtx.neardalObj != NULL)
+       sNclCmdCtx.neardalMgr = neardal_construct(&ec);
+       if (sNclCmdCtx.neardalMgr != NULL)
                NCL_CMD_PRINTF("NFC object constructed");
        else
                NCL_CMD_PRINTF("NFC object not constructed");
@@ -366,30 +371,30 @@ static NCLError ncl_cmd_neardal_construct(int argc, char *argv[])
                               neardal_error_get_text(ec));
        NCL_CMD_PRINT("\n");
 
-       if (sNclCmdCtx.neardalObj == NULL)
+       if (sNclCmdCtx.neardalMgr == NULL)
                goto exit;
 
        nclErr = NCLERR_NOERROR;
-       neardal_set_cb_adapter_added(sNclCmdCtx.neardalObj,
+       neardal_set_cb_adapter_added(sNclCmdCtx.neardalMgr,
                                      ncl_cmd_cb_adapter_added,
-                                     sNclCmdCtx.neardalObj);
-       neardal_set_cb_adapter_removed(sNclCmdCtx.neardalObj,
+                                     sNclCmdCtx.neardalMgr);
+       neardal_set_cb_adapter_removed(sNclCmdCtx.neardalMgr,
                                        ncl_cmd_cb_adapter_removed,
-                                       sNclCmdCtx.neardalObj);
-       neardal_set_cb_adapter_property_changed(sNclCmdCtx.neardalObj,
+                                       sNclCmdCtx.neardalMgr);
+       neardal_set_cb_adapter_property_changed(sNclCmdCtx.neardalMgr,
                                        ncl_cmd_cb_adapter_prop_changed,
-                                               sNclCmdCtx.neardalObj);
+                                               sNclCmdCtx.neardalMgr);
        NCL_CMD_PRINTF("NFC adapter callback registered\n");
-       neardal_set_cb_target_found(sNclCmdCtx.neardalObj,
+       neardal_set_cb_target_found(sNclCmdCtx.neardalMgr,
                                     ncl_cmd_cb_target_found,
-                                    sNclCmdCtx.neardalObj);
-       neardal_set_cb_target_lost(sNclCmdCtx.neardalObj,
+                                    sNclCmdCtx.neardalMgr);
+       neardal_set_cb_target_lost(sNclCmdCtx.neardalMgr,
                                    ncl_cmd_cb_target_lost,
-                                   sNclCmdCtx.neardalObj);
+                                   sNclCmdCtx.neardalMgr);
        NCL_CMD_PRINTF("NFC target registered\n");
-       neardal_set_cb_record_found(sNclCmdCtx.neardalObj,
+       neardal_set_cb_record_found(sNclCmdCtx.neardalMgr,
                                     ncl_cmd_cb_record_found,
-                                    sNclCmdCtx.neardalObj);
+                                    sNclCmdCtx.neardalMgr);
        NCL_CMD_PRINTF("NFC record callback registered\n");
 
 exit:
@@ -420,14 +425,14 @@ static NCLError ncl_cmd_neardal_get_adapters(int argc, char *argv[])
        int             adpOff;
 
        /* Check if NEARDAL object exist */
-       if (sNclCmdCtx.neardalObj == NULL) {
-               NCL_CMD_PRINTERR("Construct NEARDAL object...\n");
+       if (sNclCmdCtx.neardalMgr == NULL) {
+               NCL_CMD_PRINT("Construct NEARDAL object...\n");
                nclErr = ncl_cmd_neardal_construct(argc, argv);
        }
-       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalObj == NULL))
+       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalMgr == NULL))
                return nclErr;
 
-       ec = neardal_get_adapters(sNclCmdCtx.neardalObj, &adpArray,
+       ec = neardal_get_adapters(sNclCmdCtx.neardalMgr, &adpArray,
                                        &adpLen);
        if (ec == NEARDAL_SUCCESS) {
                adpOff = 0;
@@ -469,15 +474,15 @@ static NCLError ncl_cmd_neardal_get_adapter_properties(int argc, char *argv[])
                return NCLERR_PARSING_PARAMETERS;
 
        /* Check if NEARDAL object exist */
-       if (sNclCmdCtx.neardalObj == NULL) {
+       if (sNclCmdCtx.neardalMgr == NULL) {
                NCL_CMD_PRINTERR("Construct NEARDAL object...\n");
                nclErr = ncl_cmd_neardal_construct(argc, argv);
        }
-       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalObj == NULL))
+       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalMgr == NULL))
                return nclErr;
 
        adapterName = argv[1];
-       ec = neardal_get_adapter_properties(sNclCmdCtx.neardalObj,
+       ec = neardal_get_adapter_properties(sNclCmdCtx.neardalMgr,
                                             adapterName, &adapter);
 
        if (ec == NEARDAL_SUCCESS)
@@ -512,14 +517,14 @@ static NCLError ncl_cmd_neardal_get_targets(int argc, char *argv[])
                return NCLERR_PARSING_PARAMETERS;
 
        /* Check if NEARDAL object exist */
-       if (sNclCmdCtx.neardalObj == NULL) {
+       if (sNclCmdCtx.neardalMgr == NULL) {
                NCL_CMD_PRINTERR("Construct NEARDAL object...\n");
                nclErr = ncl_cmd_neardal_construct(argc, argv);
        }
-       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalObj == NULL))
+       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalMgr == NULL))
                return nclErr;
 
-       ec = neardal_get_targets(sNclCmdCtx.neardalObj, argv[1],
+       ec = neardal_get_targets(sNclCmdCtx.neardalMgr, argv[1],
                                        &tgtArray, &tgtLen);
        if (ec == NEARDAL_SUCCESS) {
                tgtOff = 0;
@@ -561,16 +566,16 @@ static NCLError ncl_cmd_neardal_get_target_properties(int argc, char *argv[])
                return NCLERR_PARSING_PARAMETERS;
 
        /* Check if NEARDAL object exist */
-       if (sNclCmdCtx.neardalObj == NULL) {
+       if (sNclCmdCtx.neardalMgr == NULL) {
                NCL_CMD_PRINTERR("Construct NEARDAL object...\n");
                nclErr = ncl_cmd_neardal_construct(argc, argv);
        }
-       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalObj == NULL))
+       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalMgr == NULL))
                return nclErr;
 
 
        targetName = argv[1];
-       ec = neardal_get_target_properties(sNclCmdCtx.neardalObj, targetName,
+       ec = neardal_get_target_properties(sNclCmdCtx.neardalMgr, targetName,
                                            &target);
 
        if (ec == NEARDAL_SUCCESS)
@@ -606,14 +611,14 @@ static NCLError ncl_cmd_neardal_get_records(int argc, char *argv[])
                return NCLERR_PARSING_PARAMETERS;
 
        /* Check if NEARDAL object exist */
-       if (sNclCmdCtx.neardalObj == NULL) {
+       if (sNclCmdCtx.neardalMgr == NULL) {
                NCL_CMD_PRINTERR("Construct NEARDAL object...\n");
                nclErr = ncl_cmd_neardal_construct(argc, argv);
        }
-       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalObj == NULL))
+       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalMgr == NULL))
                return nclErr;
 
-       ec = neardal_get_records(sNclCmdCtx.neardalObj, argv[1],
+       ec = neardal_get_records(sNclCmdCtx.neardalMgr, argv[1],
                                        &rcdArray, &rcdLen);
        if (ec == NEARDAL_SUCCESS) {
                rcdOff = 0;
@@ -654,15 +659,15 @@ static NCLError ncl_cmd_neardal_get_record_properties(int argc, char *argv[])
                return NCLERR_PARSING_PARAMETERS;
 
        /* Check if NEARDAL object exist */
-       if (sNclCmdCtx.neardalObj == NULL) {
+       if (sNclCmdCtx.neardalMgr == NULL) {
                NCL_CMD_PRINTERR("Construct NEARDAL object...\n");
                nclErr = ncl_cmd_neardal_construct(argc, argv);
        }
-       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalObj == NULL))
+       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalMgr == NULL))
                return nclErr;
 
        recordName = argv[1];
-       ec = neardal_get_record_properties(sNclCmdCtx.neardalObj, recordName,
+       ec = neardal_get_record_properties(sNclCmdCtx.neardalMgr, recordName,
                                            &record);
        if (ec == NEARDAL_SUCCESS)
                ncl_cmd_prv_dump_record(record);
@@ -733,14 +738,14 @@ static GOptionEntry options[] = {
        rcd.smartPoster = (smartPoster != 0) ? true : false;
 
        /* Check if NEARDAL object exist */
-       if (sNclCmdCtx.neardalObj == NULL) {
+       if (sNclCmdCtx.neardalMgr == NULL) {
                NCL_CMD_PRINTERR("Construct NEARDAL object...\n");
                nclErr = ncl_cmd_neardal_construct(argc, argv);
        }
-       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalObj == NULL))
+       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalMgr == NULL))
                goto exit;
 
-       ec = neardal_publish(sNclCmdCtx.neardalObj, &rcd);
+       ec = neardal_publish(sNclCmdCtx.neardalMgr, &rcd);
 
 exit:
        NCL_CMD_PRINT("\nExit with error code %d:%s\n", ec,
@@ -783,16 +788,16 @@ static NCLError ncl_cmd_neardal_start_poll(int argc, char *argv[])
                return NCLERR_PARSING_PARAMETERS;
 
        /* Check if NEARDAL object exist */
-       if (sNclCmdCtx.neardalObj == NULL) {
+       if (sNclCmdCtx.neardalMgr == NULL) {
                NCL_CMD_PRINTERR("Construct NEARDAL object...\n");
                nclErr = ncl_cmd_neardal_construct(argc, argv);
        }
-       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalObj == NULL))
+       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalMgr == NULL))
                return nclErr;
 
        /* Start polling if adapter present */
        adpName = argv[1];
-       neardal_start_poll(sNclCmdCtx.neardalObj, adpName, &ec);
+       neardal_start_poll(sNclCmdCtx.neardalMgr, adpName, &ec);
        if (ec != NEARDAL_SUCCESS) {
                NCL_CMD_PRINTF("NFC polling activation error:%d='%s'\n",
                                ec, neardal_error_get_text(ec));
@@ -822,15 +827,15 @@ static NCLError ncl_cmd_neardal_stop_poll(int argc, char *argv[])
                return NCLERR_PARSING_PARAMETERS;
 
        /* Check if NEARDAL object exist */
-       if (sNclCmdCtx.neardalObj == NULL) {
+       if (sNclCmdCtx.neardalMgr == NULL) {
                NCL_CMD_PRINTERR("Construct NEARDAL object...\n");
                nclErr = ncl_cmd_neardal_construct(argc, argv);
        }
-       if ((nclErr != NCLERR_NOERROR) && (sNclCmdCtx.neardalObj == NULL))
+       if ((nclErr != NCLERR_NOERROR) || (sNclCmdCtx.neardalMgr == NULL))
                return nclErr;
 
        adpName = argv[1];
-       neardal_stop_poll(sNclCmdCtx.neardalObj, adpName, &ec);
+       neardal_stop_poll(sNclCmdCtx.neardalMgr, adpName, &ec);
        if (ec != NEARDAL_SUCCESS) {
                NCL_CMD_PRINTF("Stop NFC polling error:%d='%s'.\n", ec,
                               neardal_error_get_text(ec));
@@ -956,8 +961,8 @@ static NCLError ncl_cmd_quit(int argc, char *argv[])
        nclCtxP = ncl_get_ctx();
 
        /* Release NEARDAL object */
-       neardal_destroy(sNclCmdCtx.neardalObj);
-       sNclCmdCtx.neardalObj = NULL;
+       neardal_destroy(sNclCmdCtx.neardalMgr);
+       sNclCmdCtx.neardalMgr = NULL;
 
        /* Quit Main Loop */
        if (nclCtxP)
@@ -1105,7 +1110,7 @@ void ncl_cmd_finalize(void)
                g_string_free(sNclCmdCtx.clBuf, TRUE);
 
        /* Release NFC object */
-       if (sNclCmdCtx.neardalObj != NULL)
-               neardal_destroy(sNclCmdCtx.neardalObj);
+       if (sNclCmdCtx.neardalMgr != NULL)
+               neardal_destroy(sNclCmdCtx.neardalMgr);
 
 }
index 4d6e6c9..f85150e 100644 (file)
@@ -31,7 +31,7 @@
 /* Command Line Interpretor context... */
 typedef struct {
        /* NEARDAL Object */
-       neardal_t       neardalObj;
+       neardal_t       neardalMgr;
 
        /* command line interpretor context */
        GString         *clBuf;         /* Command line buffer */