summaryrefslogtreecommitdiffstats
path: root/telephony-binding
diff options
context:
space:
mode:
authorMatt Porter <mporter@konsulko.com>2017-05-16 15:59:58 -0400
committerMatt Porter <mporter@konsulko.com>2017-05-19 10:01:02 -0400
commit676ce330cfa62121c9cd68b29fec5dd2458b9eee (patch)
tree84a099267d0144fb2534cc2c9b3a4cb08d0b1caf /telephony-binding
parent27dbd46c4c73964a0fe61cddf30470b4587e17f2 (diff)
Add basic telephony binding
Adds a basic telephony binding which supports dial and hangup operations via ofono. Bluetooth HFP is the only modem type supported now, with SIM support expected in the future. AGL-Bug: SPEC-597 Change-Id: Icb302533c368fe37a181601c30f49294ad292a6b Signed-off-by: Matt Porter <mporter@konsulko.com>
Diffstat (limited to 'telephony-binding')
-rw-r--r--telephony-binding/export.map1
-rw-r--r--telephony-binding/gdbus/api/ofono_manager.xml16
-rw-r--r--telephony-binding/gdbus/api/ofono_voice_call.xml25
-rw-r--r--telephony-binding/gdbus/api/ofono_voicecallmanager.xml51
-rwxr-xr-xtelephony-binding/gdbus/generate_interfaces.sh20
-rw-r--r--telephony-binding/gdbus/ofono_manager.c125
-rw-r--r--telephony-binding/gdbus/ofono_manager.h28
-rw-r--r--telephony-binding/gdbus/ofono_manager_interface.c1804
-rw-r--r--telephony-binding/gdbus/ofono_manager_interface.h356
-rw-r--r--telephony-binding/gdbus/ofono_voicecall.c28
-rw-r--r--telephony-binding/gdbus/ofono_voicecall.h19
-rw-r--r--telephony-binding/gdbus/ofono_voicecall_interface.c1895
-rw-r--r--telephony-binding/gdbus/ofono_voicecall_interface.h305
-rw-r--r--telephony-binding/gdbus/ofono_voicecallmanager.c112
-rw-r--r--telephony-binding/gdbus/ofono_voicecallmanager.h23
-rw-r--r--telephony-binding/gdbus/ofono_voicecallmanager_interface.c3336
-rw-r--r--telephony-binding/gdbus/ofono_voicecallmanager_interface.h514
-rw-r--r--telephony-binding/telephony-binding.c150
-rw-r--r--telephony-binding/telephony-binding.pri6
-rw-r--r--telephony-binding/telephony-binding.pro17
20 files changed, 8831 insertions, 0 deletions
diff --git a/telephony-binding/export.map b/telephony-binding/export.map
new file mode 100644
index 0000000..52c1b4a
--- /dev/null
+++ b/telephony-binding/export.map
@@ -0,0 +1 @@
+{ global: afbBindingV1*; local: *; };
diff --git a/telephony-binding/gdbus/api/ofono_manager.xml b/telephony-binding/gdbus/api/ofono_manager.xml
new file mode 100644
index 0000000..0d8d65b
--- /dev/null
+++ b/telephony-binding/gdbus/api/ofono_manager.xml
@@ -0,0 +1,16 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
+"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<node name="">
+ <interface name="org.ofono.Manager">
+ <method name="GetModems">
+ <arg type="a(oa{sv})" direction="out"/>
+ </method>
+ <signal name="ModemAdded">
+ <arg type="o"/>
+ <arg type="a{sv}"/>
+ </signal>
+ <signal name="ModemRemoved">
+ <arg type="o"/>
+ </signal>
+ </interface>
+</node>
diff --git a/telephony-binding/gdbus/api/ofono_voice_call.xml b/telephony-binding/gdbus/api/ofono_voice_call.xml
new file mode 100644
index 0000000..6dd7391
--- /dev/null
+++ b/telephony-binding/gdbus/api/ofono_voice_call.xml
@@ -0,0 +1,25 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
+"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<node name="">
+ <interface name="org.ofono.VoiceCall">
+ <method name="GetProperties">
+ <arg type="a{sv}" direction="out"/>
+ </method>
+ <method name="SetProperty">
+ <arg type="s" direction="in"/>
+ <arg type="v" direction="in"/>
+ </method>
+ <method name="Answer"/>
+ <method name="Hangup"/>
+ <method name="Deflect">
+ <arg type="s" direction="in"/>
+ </method>
+ <signal name="PropertyChanged">
+ <arg type="s"/>
+ <arg type="v"/>
+ </signal>
+ <signal name="DisconnectReason">
+ <arg type="s"/>
+ </signal>
+ </interface>
+</node>
diff --git a/telephony-binding/gdbus/api/ofono_voicecallmanager.xml b/telephony-binding/gdbus/api/ofono_voicecallmanager.xml
new file mode 100644
index 0000000..2a032f5
--- /dev/null
+++ b/telephony-binding/gdbus/api/ofono_voicecallmanager.xml
@@ -0,0 +1,51 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
+"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<node name="">
+ <interface name="org.ofono.VoiceCallManager">
+ <method name="GetProperties">
+ <arg type="a{sv}" direction="out"/>
+ </method>
+ <method name="Dial">
+ <arg type="s" direction="in"/>
+ <arg type="s" direction="in"/>
+ <arg type="o" direction="out"/>
+ </method>
+ <method name="Transfer"/>
+ <method name="SwapCalls"/>
+ <method name="ReleaseAndAnswer"/>
+ <method name="HoldAndAnswer"/>
+ <method name="HangupAll"/>
+ <method name="PrivateChat">
+ <arg type="o" direction="in"/>
+ <arg type="ao" direction="out"/>
+ </method>
+ <method name="CreateMultiparty">
+ <arg type="ao" direction="out"/>
+ </method>
+ <method name="HangupMultiparty"/>
+ <method name="SendTones">
+ <arg type="s" direction="in"/>
+ </method>
+ <method name="GetCalls">
+ <arg type="a(oa{sv})" direction="out"/>
+ </method>
+ <signal name="PropertyChanged">
+ <arg type="s"/>
+ <arg type="v"/>
+ </signal>
+ <signal name="CallAdded">
+ <arg type="o"/>
+ <arg type="a{sv}"/>
+ </signal>
+ <signal name="CallRemoved">
+ <arg type="o"/>
+ </signal>
+ <signal name="BarringActive">
+ <arg type="s"/>
+ </signal>
+ <signal name="Forwarded">
+ <arg type="s"/>
+ </signal>
+ </interface>
+
+</node>
diff --git a/telephony-binding/gdbus/generate_interfaces.sh b/telephony-binding/gdbus/generate_interfaces.sh
new file mode 100755
index 0000000..a60c435
--- /dev/null
+++ b/telephony-binding/gdbus/generate_interfaces.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+CG=gdbus-codegen
+API=api
+
+$CG \
+ --interface-prefix Ofono.Manager. \
+ --generate-c-code ofono_manager_interface \
+ --c-generate-object-manager \
+ $API/ofono_manager.xml
+
+$CG \
+ --interface-prefix Ofono.VoiceCallManager. \
+ --generate-c-code ofono_voicecallmanager_interface \
+ $API/ofono_voicecallmanager.xml
+
+$CG \
+ --interface-prefix Ofono.VoiceCall. \
+ --generate-c-code ofono_voicecall_interface \
+ $API/ofono_voice_call.xml
diff --git a/telephony-binding/gdbus/ofono_manager.c b/telephony-binding/gdbus/ofono_manager.c
new file mode 100644
index 0000000..2f8c4df
--- /dev/null
+++ b/telephony-binding/gdbus/ofono_manager.c
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2017 Konsulko Group
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define _GNU_SOURCE
+
+#include <string.h>
+
+#include <afb/afb-binding.h>
+
+#include "ofono_manager.h"
+#include "ofono_manager_interface.h"
+
+struct ofono_manager_modem
+{
+ const gchar *path;
+ const gchar *name;
+ const gchar *type;
+ gboolean powered;
+ gboolean online;
+};
+
+static OrgOfonoManager *manager;
+static struct ofono_manager_modem default_modem;
+static const struct afb_binding_interface *interface;
+
+void ofono_manager_init(const struct afb_binding_interface *iface)
+{
+ GVariant *out_arg = NULL, *next, *value;
+ GError *error = NULL;
+ gchar *path, *key;
+ GVariantIter *iter, *iter2;
+
+ interface = iface;
+
+ if (manager) {
+ ERROR(interface, "Ofono Manager already initialized\n");
+ return;
+ }
+
+ manager = org_ofono_manager_proxy_new_for_bus_sync(
+ G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE,
+ "org.ofono", "/", NULL, NULL);
+
+ if (!manager) {
+ ERROR(interface, "Ofono Manager not initialized\n");
+ return;
+ }
+
+ org_ofono_manager_call_get_modems_sync(manager, &out_arg, NULL, &error);
+ if (error == NULL) {
+ g_variant_get(out_arg, "a(oa{sv})", &iter);
+ next = g_variant_iter_next_value(iter);
+ g_variant_get(next, "(oa{sv})", &path, &iter2);
+ default_modem.path = path;
+ while (g_variant_iter_loop(iter2, "{sv}", &key, &value)) {
+ if (!strcmp(key, "Name"))
+ default_modem.name = g_variant_get_string(value, NULL);
+ else if (!strcmp(key, "Type"))
+ default_modem.type = g_variant_get_string(value, NULL);
+ else if (!strcmp(key, "Powered"))
+ default_modem.powered = g_variant_get_boolean(value);
+ else if (!strcmp(key, "Online"))
+ default_modem.online = g_variant_get_boolean(value);
+ }
+ }
+}
+
+
+const gchar *ofono_manager_get_default_modem_path(void)
+{
+ if (!manager) {
+ ERROR(interface, "Ofono Manager not initialized\n");
+ }
+
+ return default_modem.path;
+}
+
+const gchar *ofono_manager_get_default_modem_name(void)
+{
+ if (!manager) {
+ ERROR(interface, "Ofono Manager not initialized\n");
+ }
+
+ return default_modem.name;
+}
+
+const gchar *ofono_manager_get_default_modem_type(void)
+{
+ if (!manager) {
+ ERROR(interface, "Ofono Manager not initialized\n");
+ }
+
+ return default_modem.type;
+}
+
+gboolean ofono_manager_get_default_modem_powered(void)
+{
+ if (!manager) {
+ ERROR(interface, "Ofono Manager not initialized\n");
+ }
+
+ return default_modem.powered;
+}
+
+gboolean ofono_manager_get_default_modem_online(void)
+{
+ if (!manager) {
+ ERROR(interface, "Ofono Manager not initialized\n");
+ }
+
+ return default_modem.online;
+}
diff --git a/telephony-binding/gdbus/ofono_manager.h b/telephony-binding/gdbus/ofono_manager.h
new file mode 100644
index 0000000..3b55547
--- /dev/null
+++ b/telephony-binding/gdbus/ofono_manager.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2017 Konsulko Group
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <glib.h>
+
+#define _GNU_SOURCE
+#include <afb/afb-binding.h>
+#include <afb/afb-service-itf.h>
+
+void ofono_manager_init(const struct afb_binding_interface *iface);
+const gchar *ofono_manager_get_default_modem_path(void);
+const gchar *ofono_manager_get_default_modem_name(void);
+const gchar *ofono_manager_get_default_modem_type(void);
+gboolean ofono_manager_get_default_modem_powered(void);
+gboolean ofono_manager_get_default_modem_online(void);
diff --git a/telephony-binding/gdbus/ofono_manager_interface.c b/telephony-binding/gdbus/ofono_manager_interface.c
new file mode 100644
index 0000000..d58021f
--- /dev/null
+++ b/telephony-binding/gdbus/ofono_manager_interface.c
@@ -0,0 +1,1804 @@
+/*
+ * Generated by gdbus-codegen 2.50.3. 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 "ofono_manager_interface.h"
+
+#include <string.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:
+ {
+ /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
+ gdouble da = g_value_get_double (a);
+ gdouble db = g_value_get_double (b);
+ ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
+ }
+ 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.ofono.Manager
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OrgOfonoManager
+ * @title: OrgOfonoManager
+ * @short_description: Generated C code for the org.ofono.Manager D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.ofono.Manager ---- */
+
+static const _ExtendedGDBusArgInfo _org_ofono_manager_method_info_get_modems_OUT_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "a(oa{sv})",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_manager_method_info_get_modems_OUT_ARG_pointers[] =
+{
+ &_org_ofono_manager_method_info_get_modems_OUT_ARG_unnamed_arg0,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_manager_method_info_get_modems =
+{
+ {
+ -1,
+ (gchar *) "GetModems",
+ NULL,
+ (GDBusArgInfo **) &_org_ofono_manager_method_info_get_modems_OUT_ARG_pointers,
+ NULL
+ },
+ "handle-get-modems",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _org_ofono_manager_method_info_pointers[] =
+{
+ &_org_ofono_manager_method_info_get_modems,
+ NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_manager_signal_info_modem_added_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "o",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_manager_signal_info_modem_added_ARG_unnamed_arg1 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg1",
+ (gchar *) "a{sv}",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_manager_signal_info_modem_added_ARG_pointers[] =
+{
+ &_org_ofono_manager_signal_info_modem_added_ARG_unnamed_arg0,
+ &_org_ofono_manager_signal_info_modem_added_ARG_unnamed_arg1,
+ NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_ofono_manager_signal_info_modem_added =
+{
+ {
+ -1,
+ (gchar *) "ModemAdded",
+ (GDBusArgInfo **) &_org_ofono_manager_signal_info_modem_added_ARG_pointers,
+ NULL
+ },
+ "modem-added"
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_manager_signal_info_modem_removed_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "o",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_manager_signal_info_modem_removed_ARG_pointers[] =
+{
+ &_org_ofono_manager_signal_info_modem_removed_ARG_unnamed_arg0,
+ NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_ofono_manager_signal_info_modem_removed =
+{
+ {
+ -1,
+ (gchar *) "ModemRemoved",
+ (GDBusArgInfo **) &_org_ofono_manager_signal_info_modem_removed_ARG_pointers,
+ NULL
+ },
+ "modem-removed"
+};
+
+static const _ExtendedGDBusSignalInfo * const _org_ofono_manager_signal_info_pointers[] =
+{
+ &_org_ofono_manager_signal_info_modem_added,
+ &_org_ofono_manager_signal_info_modem_removed,
+ NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _org_ofono_manager_interface_info =
+{
+ {
+ -1,
+ (gchar *) "org.ofono.Manager",
+ (GDBusMethodInfo **) &_org_ofono_manager_method_info_pointers,
+ (GDBusSignalInfo **) &_org_ofono_manager_signal_info_pointers,
+ NULL,
+ NULL
+ },
+ "org-ofono-manager",
+};
+
+
+/**
+ * org_ofono_manager_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+org_ofono_manager_interface_info (void)
+{
+ return (GDBusInterfaceInfo *) &_org_ofono_manager_interface_info.parent_struct;
+}
+
+/**
+ * org_ofono_manager_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OrgOfonoManager interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+org_ofono_manager_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+ return property_id_begin - 1;
+}
+
+
+
+/**
+ * OrgOfonoManager:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link>.
+ */
+
+/**
+ * OrgOfonoManagerIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_modems: Handler for the #OrgOfonoManager::handle-get-modems signal.
+ * @modem_added: Handler for the #OrgOfonoManager::modem-added signal.
+ * @modem_removed: Handler for the #OrgOfonoManager::modem-removed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link>.
+ */
+
+typedef OrgOfonoManagerIface OrgOfonoManagerInterface;
+G_DEFINE_INTERFACE (OrgOfonoManager, org_ofono_manager, G_TYPE_OBJECT);
+
+static void
+org_ofono_manager_default_init (OrgOfonoManagerIface *iface)
+{
+ /* GObject signals for incoming D-Bus method calls: */
+ /**
+ * OrgOfonoManager::handle-get-modems:
+ * @object: A #OrgOfonoManager.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-Manager.GetModems">GetModems()</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_ofono_manager_complete_get_modems() 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-modems",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoManagerIface, handle_get_modems),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /* GObject signals for received D-Bus signals: */
+ /**
+ * OrgOfonoManager::modem-added:
+ * @object: A #OrgOfonoManager.
+ * @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-ofono-Manager.ModemAdded">"ModemAdded"</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 ("modem-added",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoManagerIface, modem_added),
+ NULL,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+ /**
+ * OrgOfonoManager::modem-removed:
+ * @object: A #OrgOfonoManager.
+ * @arg_unnamed_arg0: Argument.
+ *
+ * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-Manager.ModemRemoved">"ModemRemoved"</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 ("modem-removed",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoManagerIface, modem_removed),
+ NULL,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 1, G_TYPE_STRING);
+
+}
+
+/**
+ * org_ofono_manager_emit_modem_added:
+ * @object: A #OrgOfonoManager.
+ * @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-ofono-Manager.ModemAdded">"ModemAdded"</link> D-Bus signal.
+ */
+void
+org_ofono_manager_emit_modem_added (
+ OrgOfonoManager *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1)
+{
+ g_signal_emit_by_name (object, "modem-added", arg_unnamed_arg0, arg_unnamed_arg1);
+}
+
+/**
+ * org_ofono_manager_emit_modem_removed:
+ * @object: A #OrgOfonoManager.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-Manager.ModemRemoved">"ModemRemoved"</link> D-Bus signal.
+ */
+void
+org_ofono_manager_emit_modem_removed (
+ OrgOfonoManager *object,
+ const gchar *arg_unnamed_arg0)
+{
+ g_signal_emit_by_name (object, "modem-removed", arg_unnamed_arg0);
+}
+
+/**
+ * org_ofono_manager_call_get_modems:
+ * @proxy: A #OrgOfonoManagerProxy.
+ * @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-ofono-Manager.GetModems">GetModems()</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_ofono_manager_call_get_modems_finish() to get the result of the operation.
+ *
+ * See org_ofono_manager_call_get_modems_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_manager_call_get_modems (
+ OrgOfonoManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "GetModems",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_manager_call_get_modems_finish:
+ * @proxy: A #OrgOfonoManagerProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_manager_call_get_modems().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_manager_call_get_modems().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_manager_call_get_modems_finish (
+ OrgOfonoManager *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(oa{sv}))",
+ out_unnamed_arg0);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_ofono_manager_call_get_modems_sync:
+ * @proxy: A #OrgOfonoManagerProxy.
+ * @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-ofono-Manager.GetModems">GetModems()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_manager_call_get_modems() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_manager_call_get_modems_sync (
+ OrgOfonoManager *proxy,
+ GVariant **out_unnamed_arg0,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "GetModems",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(@a(oa{sv}))",
+ out_unnamed_arg0);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_ofono_manager_complete_get_modems:
+ * @object: A #OrgOfonoManager.
+ * @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-ofono-Manager.GetModems">GetModems()</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_ofono_manager_complete_get_modems (
+ OrgOfonoManager *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *unnamed_arg0)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("(@a(oa{sv}))",
+ unnamed_arg0));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgOfonoManagerProxy:
+ *
+ * The #OrgOfonoManagerProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgOfonoManagerProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgOfonoManagerProxy.
+ */
+
+struct _OrgOfonoManagerProxyPrivate
+{
+ GData *qdata;
+};
+
+static void org_ofono_manager_proxy_iface_init (OrgOfonoManagerIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OrgOfonoManagerProxy, org_ofono_manager_proxy, G_TYPE_DBUS_PROXY,
+ G_ADD_PRIVATE (OrgOfonoManagerProxy)
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_OFONO_MANAGER, org_ofono_manager_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OrgOfonoManagerProxy, org_ofono_manager_proxy, G_TYPE_DBUS_PROXY,
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_OFONO_MANAGER, org_ofono_manager_proxy_iface_init));
+
+#endif
+static void
+org_ofono_manager_proxy_finalize (GObject *object)
+{
+ OrgOfonoManagerProxy *proxy = ORG_OFONO_MANAGER_PROXY (object);
+ g_datalist_clear (&proxy->priv->qdata);
+ G_OBJECT_CLASS (org_ofono_manager_proxy_parent_class)->finalize (object);
+}
+
+static void
+org_ofono_manager_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+org_ofono_manager_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+org_ofono_manager_proxy_g_signal (GDBusProxy *proxy,
+ const gchar *sender_name G_GNUC_UNUSED,
+ 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_ofono_manager_interface_info.parent_struct, signal_name);
+ if (info == NULL)
+ return;
+ num_params = g_variant_n_children (parameters);
+ paramv = g_new0 (GValue, num_params + 1);
+ g_value_init (&paramv[0], TYPE_ORG_OFONO_MANAGER);
+ g_value_set_object (&paramv[0], proxy);
+ g_variant_iter_init (&iter, parameters);
+ n = 1;
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_OFONO_MANAGER);
+ g_signal_emitv (paramv, signal_id, 0, NULL);
+ for (n = 0; n < num_params + 1; n++)
+ g_value_unset (&paramv[n]);
+ g_free (paramv);
+}
+
+static void
+org_ofono_manager_proxy_g_properties_changed (GDBusProxy *_proxy,
+ GVariant *changed_properties,
+ const gchar *const *invalidated_properties)
+{
+ OrgOfonoManagerProxy *proxy = ORG_OFONO_MANAGER_PROXY (_proxy);
+ guint n;
+ const gchar *key;
+ GVariantIter *iter;
+ _ExtendedGDBusPropertyInfo *info;
+ g_variant_get (changed_properties, "a{sv}", &iter);
+ while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+ {
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_ofono_manager_interface_info.parent_struct, 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_ofono_manager_interface_info.parent_struct, 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_ofono_manager_proxy_init (OrgOfonoManagerProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ proxy->priv = org_ofono_manager_proxy_get_instance_private (proxy);
+#else
+ proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_OFONO_MANAGER_PROXY, OrgOfonoManagerProxyPrivate);
+#endif
+
+ g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_ofono_manager_interface_info ());
+}
+
+static void
+org_ofono_manager_proxy_class_init (OrgOfonoManagerProxyClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusProxyClass *proxy_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = org_ofono_manager_proxy_finalize;
+ gobject_class->get_property = org_ofono_manager_proxy_get_property;
+ gobject_class->set_property = org_ofono_manager_proxy_set_property;
+
+ proxy_class = G_DBUS_PROXY_CLASS (klass);
+ proxy_class->g_signal = org_ofono_manager_proxy_g_signal;
+ proxy_class->g_properties_changed = org_ofono_manager_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (OrgOfonoManagerProxyPrivate));
+#endif
+}
+
+static void
+org_ofono_manager_proxy_iface_init (OrgOfonoManagerIface *iface)
+{
+}
+
+/**
+ * org_ofono_manager_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.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_ofono_manager_proxy_new_finish() to get the result of the operation.
+ *
+ * See org_ofono_manager_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_ofono_manager_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_ORG_OFONO_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.Manager", NULL);
+}
+
+/**
+ * org_ofono_manager_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_manager_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_ofono_manager_proxy_new().
+ *
+ * Returns: (transfer full) (type OrgOfonoManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgOfonoManager *
+org_ofono_manager_proxy_new_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return ORG_OFONO_MANAGER (ret);
+ else
+ return NULL;
+}
+
+/**
+ * org_ofono_manager_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_manager_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgOfonoManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgOfonoManager *
+org_ofono_manager_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_ORG_OFONO_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.Manager", NULL);
+ if (ret != NULL)
+ return ORG_OFONO_MANAGER (ret);
+ else
+ return NULL;
+}
+
+
+/**
+ * org_ofono_manager_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like org_ofono_manager_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_ofono_manager_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See org_ofono_manager_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_ofono_manager_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_ORG_OFONO_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.Manager", NULL);
+}
+
+/**
+ * org_ofono_manager_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_manager_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_ofono_manager_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OrgOfonoManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgOfonoManager *
+org_ofono_manager_proxy_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return ORG_OFONO_MANAGER (ret);
+ else
+ return NULL;
+}
+
+/**
+ * org_ofono_manager_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like org_ofono_manager_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_manager_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgOfonoManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgOfonoManager *
+org_ofono_manager_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_ORG_OFONO_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.Manager", NULL);
+ if (ret != NULL)
+ return ORG_OFONO_MANAGER (ret);
+ else
+ return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgOfonoManagerSkeleton:
+ *
+ * The #OrgOfonoManagerSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgOfonoManagerSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgOfonoManagerSkeleton.
+ */
+
+struct _OrgOfonoManagerSkeletonPrivate
+{
+ GValue *properties;
+ GList *changed_properties;
+ GSource *changed_properties_idle_source;
+ GMainContext *context;
+ GMutex lock;
+};
+
+static void
+_org_ofono_manager_skeleton_handle_method_call (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ OrgOfonoManagerSkeleton *skeleton = ORG_OFONO_MANAGER_SKELETON (user_data);
+ _ExtendedGDBusMethodInfo *info;
+ GVariantIter iter;
+ GVariant *child;
+ GValue *paramv;
+ guint num_params;
+ guint num_extra;
+ guint n;
+ guint signal_id;
+ GValue return_value = G_VALUE_INIT;
+ info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+ g_assert (info != NULL);
+ num_params = g_variant_n_children (parameters);
+ num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra);
+ n = 0;
+ g_value_init (&paramv[n], TYPE_ORG_OFONO_MANAGER);
+ g_value_set_object (&paramv[n++], skeleton);
+ g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+ g_value_set_object (&paramv[n++], invocation);
+ if (info->pass_fdlist)
+ {
+#ifdef G_OS_UNIX
+ g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+ g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+ g_assert_not_reached ();
+#endif
+ }
+ g_variant_iter_init (&iter, parameters);
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_OFONO_MANAGER);
+ g_value_init (&return_value, G_TYPE_BOOLEAN);
+ g_signal_emitv (paramv, signal_id, 0, &return_value);
+ if (!g_value_get_boolean (&return_value))
+ g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+ g_value_unset (&return_value);
+ for (n = 0; n < num_params + num_extra; n++)
+ g_value_unset (&paramv[n]);
+ g_free (paramv);
+}
+
+static GVariant *
+_org_ofono_manager_skeleton_handle_get_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GError **error,
+ gpointer user_data)
+{
+ OrgOfonoManagerSkeleton *skeleton = ORG_OFONO_MANAGER_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ GVariant *ret;
+ ret = NULL;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_ofono_manager_interface_info.parent_struct, 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_ofono_manager_skeleton_handle_set_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GVariant *variant,
+ GError **error,
+ gpointer user_data)
+{
+ OrgOfonoManagerSkeleton *skeleton = ORG_OFONO_MANAGER_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ gboolean ret;
+ ret = FALSE;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_ofono_manager_interface_info.parent_struct, 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_ofono_manager_skeleton_vtable =
+{
+ _org_ofono_manager_skeleton_handle_method_call,
+ _org_ofono_manager_skeleton_handle_get_property,
+ _org_ofono_manager_skeleton_handle_set_property,
+ {NULL}
+};
+
+static GDBusInterfaceInfo *
+org_ofono_manager_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return org_ofono_manager_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+org_ofono_manager_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return (GDBusInterfaceVTable *) &_org_ofono_manager_skeleton_vtable;
+}
+
+static GVariant *
+org_ofono_manager_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+ OrgOfonoManagerSkeleton *skeleton = ORG_OFONO_MANAGER_SKELETON (_skeleton);
+
+ GVariantBuilder builder;
+ guint n;
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+ if (_org_ofono_manager_interface_info.parent_struct.properties == NULL)
+ goto out;
+ for (n = 0; _org_ofono_manager_interface_info.parent_struct.properties[n] != NULL; n++)
+ {
+ GDBusPropertyInfo *info = _org_ofono_manager_interface_info.parent_struct.properties[n];
+ if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+ {
+ GVariant *value;
+ value = _org_ofono_manager_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.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_ofono_manager_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_org_ofono_manager_on_signal_modem_added (
+ OrgOfonoManager *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1)
+{
+ OrgOfonoManagerSkeleton *skeleton = ORG_OFONO_MANAGER_SKELETON (object);
+
+ GList *connections, *l;
+ GVariant *signal_variant;
+ connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+ signal_variant = g_variant_ref_sink (g_variant_new ("(o@a{sv})",
+ arg_unnamed_arg0,
+ arg_unnamed_arg1));
+ for (l = connections; l != NULL; l = l->next)
+ {
+ GDBusConnection *connection = l->data;
+ g_dbus_connection_emit_signal (connection,
+ NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.Manager", "ModemAdded",
+ signal_variant, NULL);
+ }
+ g_variant_unref (signal_variant);
+ g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_org_ofono_manager_on_signal_modem_removed (
+ OrgOfonoManager *object,
+ const gchar *arg_unnamed_arg0)
+{
+ OrgOfonoManagerSkeleton *skeleton = ORG_OFONO_MANAGER_SKELETON (object);
+
+ GList *connections, *l;
+ GVariant *signal_variant;
+ connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+ signal_variant = g_variant_ref_sink (g_variant_new ("(o)",
+ arg_unnamed_arg0));
+ for (l = connections; l != NULL; l = l->next)
+ {
+ GDBusConnection *connection = l->data;
+ g_dbus_connection_emit_signal (connection,
+ NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.Manager", "ModemRemoved",
+ signal_variant, NULL);
+ }
+ g_variant_unref (signal_variant);
+ g_list_free_full (connections, g_object_unref);
+}
+
+static void org_ofono_manager_skeleton_iface_init (OrgOfonoManagerIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OrgOfonoManagerSkeleton, org_ofono_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_ADD_PRIVATE (OrgOfonoManagerSkeleton)
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_OFONO_MANAGER, org_ofono_manager_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OrgOfonoManagerSkeleton, org_ofono_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_OFONO_MANAGER, org_ofono_manager_skeleton_iface_init));
+
+#endif
+static void
+org_ofono_manager_skeleton_finalize (GObject *object)
+{
+ OrgOfonoManagerSkeleton *skeleton = ORG_OFONO_MANAGER_SKELETON (object);
+ g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+ if (skeleton->priv->changed_properties_idle_source != NULL)
+ g_source_destroy (skeleton->priv->changed_properties_idle_source);
+ g_main_context_unref (skeleton->priv->context);
+ g_mutex_clear (&skeleton->priv->lock);
+ G_OBJECT_CLASS (org_ofono_manager_skeleton_parent_class)->finalize (object);
+}
+
+static void
+org_ofono_manager_skeleton_init (OrgOfonoManagerSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ skeleton->priv = org_ofono_manager_skeleton_get_instance_private (skeleton);
+#else
+ skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_OFONO_MANAGER_SKELETON, OrgOfonoManagerSkeletonPrivate);
+#endif
+
+ g_mutex_init (&skeleton->priv->lock);
+ skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+org_ofono_manager_skeleton_class_init (OrgOfonoManagerSkeletonClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusInterfaceSkeletonClass *skeleton_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = org_ofono_manager_skeleton_finalize;
+
+ skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+ skeleton_class->get_info = org_ofono_manager_skeleton_dbus_interface_get_info;
+ skeleton_class->get_properties = org_ofono_manager_skeleton_dbus_interface_get_properties;
+ skeleton_class->flush = org_ofono_manager_skeleton_dbus_interface_flush;
+ skeleton_class->get_vtable = org_ofono_manager_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (OrgOfonoManagerSkeletonPrivate));
+#endif
+}
+
+static void
+org_ofono_manager_skeleton_iface_init (OrgOfonoManagerIface *iface)
+{
+ iface->modem_added = _org_ofono_manager_on_signal_modem_added;
+ iface->modem_removed = _org_ofono_manager_on_signal_modem_removed;
+}
+
+/**
+ * org_ofono_manager_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link>.
+ *
+ * Returns: (transfer full) (type OrgOfonoManagerSkeleton): The skeleton object.
+ */
+OrgOfonoManager *
+org_ofono_manager_skeleton_new (void)
+{
+ return ORG_OFONO_MANAGER (g_object_new (TYPE_ORG_OFONO_MANAGER_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for Object, ObjectProxy and ObjectSkeleton
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:Object
+ * @title: Object
+ * @short_description: Specialized GDBusObject types
+ *
+ * This section contains the #Object, #ObjectProxy, and #ObjectSkeleton types which make it easier to work with objects implementing generated types for D-Bus interfaces.
+ */
+
+/**
+ * Object:
+ *
+ * The #Object type is a specialized container of interfaces.
+ */
+
+/**
+ * ObjectIface:
+ * @parent_iface: The parent interface.
+ *
+ * Virtual table for the #Object interface.
+ */
+
+typedef ObjectIface ObjectInterface;
+G_DEFINE_INTERFACE_WITH_CODE (Object, object, G_TYPE_OBJECT, g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT));
+
+static void
+object_default_init (ObjectIface *iface)
+{
+ /**
+ * Object:org-ofono-manager:
+ *
+ * The #OrgOfonoManager instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link>, if any.
+ *
+ * Connect to the #GObject::notify signal to get informed of property changes.
+ */
+ g_object_interface_install_property (iface, g_param_spec_object ("org-ofono-manager", "org-ofono-manager", "org-ofono-manager", TYPE_ORG_OFONO_MANAGER, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
+
+}
+
+/**
+ * object_get_org_ofono_manager:
+ * @object: A #Object.
+ *
+ * Gets the #OrgOfonoManager instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #OrgOfonoManager that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+OrgOfonoManager *object_get_org_ofono_manager (Object *object)
+{
+ GDBusInterface *ret;
+ ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Manager");
+ if (ret == NULL)
+ return NULL;
+ return ORG_OFONO_MANAGER (ret);
+}
+
+
+/**
+ * object_peek_org_ofono_manager: (skip)
+ * @object: A #Object.
+ *
+ * Like object_get_org_ofono_manager() but doesn't increase the reference count on the returned object.
+ *
+ * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
+ *
+ * Returns: (transfer none): A #OrgOfonoManager or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+OrgOfonoManager *object_peek_org_ofono_manager (Object *object)
+{
+ GDBusInterface *ret;
+ ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Manager");
+ if (ret == NULL)
+ return NULL;
+ g_object_unref (ret);
+ return ORG_OFONO_MANAGER (ret);
+}
+
+
+static void
+object_notify (GDBusObject *object, GDBusInterface *interface)
+{
+ _ExtendedGDBusInterfaceInfo *info = (_ExtendedGDBusInterfaceInfo *) g_dbus_interface_get_info (interface);
+ /* info can be NULL if the other end is using a D-Bus interface we don't know
+ * anything about, for example old generated code in this process talking to
+ * newer generated code in the other process. */
+ if (info != NULL)
+ g_object_notify (G_OBJECT (object), info->hyphen_name);
+}
+
+/**
+ * ObjectProxy:
+ *
+ * The #ObjectProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * ObjectProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #ObjectProxy.
+ */
+
+static void
+object_proxy__object_iface_init (ObjectIface *iface G_GNUC_UNUSED)
+{
+}
+
+static void
+object_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface)
+{
+ iface->interface_added = object_notify;
+ iface->interface_removed = object_notify;
+}
+
+
+G_DEFINE_TYPE_WITH_CODE (ObjectProxy, object_proxy, G_TYPE_DBUS_OBJECT_PROXY,
+ G_IMPLEMENT_INTERFACE (TYPE_OBJECT, object_proxy__object_iface_init)
+ G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, object_proxy__g_dbus_object_iface_init));
+
+static void
+object_proxy_init (ObjectProxy *object G_GNUC_UNUSED)
+{
+}
+
+static void
+object_proxy_set_property (GObject *gobject,
+ guint prop_id,
+ const GValue *value G_GNUC_UNUSED,
+ GParamSpec *pspec)
+{
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+}
+
+static void
+object_proxy_get_property (GObject *gobject,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ObjectProxy *object = OBJECT_PROXY (gobject);
+ GDBusInterface *interface;
+
+ switch (prop_id)
+ {
+ case 1:
+ interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Manager");
+ g_value_take_object (value, interface);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+object_proxy_class_init (ObjectProxyClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ gobject_class->set_property = object_proxy_set_property;
+ gobject_class->get_property = object_proxy_get_property;
+
+ g_object_class_override_property (gobject_class, 1, "org-ofono-manager");
+}
+
+/**
+ * object_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @object_path: An object path.
+ *
+ * Creates a new proxy object.
+ *
+ * Returns: (transfer full): The proxy object.
+ */
+ObjectProxy *
+object_proxy_new (GDBusConnection *connection,
+ const gchar *object_path)
+{
+ g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL);
+ g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);
+ return OBJECT_PROXY (g_object_new (TYPE_OBJECT_PROXY, "g-connection", connection, "g-object-path", object_path, NULL));
+}
+
+/**
+ * ObjectSkeleton:
+ *
+ * The #ObjectSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * ObjectSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #ObjectSkeleton.
+ */
+
+static void
+object_skeleton__object_iface_init (ObjectIface *iface G_GNUC_UNUSED)
+{
+}
+
+
+static void
+object_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface)
+{
+ iface->interface_added = object_notify;
+ iface->interface_removed = object_notify;
+}
+
+G_DEFINE_TYPE_WITH_CODE (ObjectSkeleton, object_skeleton, G_TYPE_DBUS_OBJECT_SKELETON,
+ G_IMPLEMENT_INTERFACE (TYPE_OBJECT, object_skeleton__object_iface_init)
+ G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, object_skeleton__g_dbus_object_iface_init));
+
+static void
+object_skeleton_init (ObjectSkeleton *object G_GNUC_UNUSED)
+{
+}
+
+static void
+object_skeleton_set_property (GObject *gobject,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ObjectSkeleton *object = OBJECT_SKELETON (gobject);
+ GDBusInterfaceSkeleton *interface;
+
+ switch (prop_id)
+ {
+ case 1:
+ interface = g_value_get_object (value);
+ if (interface != NULL)
+ {
+ g_warn_if_fail (IS_ORG_OFONO_MANAGER (interface));
+ g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
+ }
+ else
+ {
+ g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.ofono.Manager");
+ }
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+object_skeleton_get_property (GObject *gobject,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ObjectSkeleton *object = OBJECT_SKELETON (gobject);
+ GDBusInterface *interface;
+
+ switch (prop_id)
+ {
+ case 1:
+ interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.ofono.Manager");
+ g_value_take_object (value, interface);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+object_skeleton_class_init (ObjectSkeletonClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ gobject_class->set_property = object_skeleton_set_property;
+ gobject_class->get_property = object_skeleton_get_property;
+
+ g_object_class_override_property (gobject_class, 1, "org-ofono-manager");
+}
+
+/**
+ * object_skeleton_new:
+ * @object_path: An object path.
+ *
+ * Creates a new skeleton object.
+ *
+ * Returns: (transfer full): The skeleton object.
+ */
+ObjectSkeleton *
+object_skeleton_new (const gchar *object_path)
+{
+ g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);
+ return OBJECT_SKELETON (g_object_new (TYPE_OBJECT_SKELETON, "g-object-path", object_path, NULL));
+}
+
+/**
+ * object_skeleton_set_org_ofono_manager:
+ * @object: A #ObjectSkeleton.
+ * @interface_: (allow-none): A #OrgOfonoManager or %NULL to clear the interface.
+ *
+ * Sets the #OrgOfonoManager instance for the D-Bus interface <link linkend="gdbus-interface-org-ofono-Manager.top_of_page">org.ofono.Manager</link> on @object.
+ */
+void object_skeleton_set_org_ofono_manager (ObjectSkeleton *object, OrgOfonoManager *interface_)
+{
+ g_object_set (G_OBJECT (object), "org-ofono-manager", interface_, NULL);
+}
+
+
+/* ------------------------------------------------------------------------
+ * Code for ObjectManager client
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:ObjectManagerClient
+ * @title: ObjectManagerClient
+ * @short_description: Generated GDBusObjectManagerClient type
+ *
+ * This section contains a #GDBusObjectManagerClient that uses object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc.
+ */
+
+/**
+ * ObjectManagerClient:
+ *
+ * The #ObjectManagerClient structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * ObjectManagerClientClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #ObjectManagerClient.
+ */
+
+G_DEFINE_TYPE (ObjectManagerClient, object_manager_client, G_TYPE_DBUS_OBJECT_MANAGER_CLIENT);
+
+static void
+object_manager_client_init (ObjectManagerClient *manager G_GNUC_UNUSED)
+{
+}
+
+static void
+object_manager_client_class_init (ObjectManagerClientClass *klass G_GNUC_UNUSED)
+{
+}
+
+/**
+ * object_manager_client_get_proxy_type:
+ * @manager: A #GDBusObjectManagerClient.
+ * @object_path: The object path of the remote object (unused).
+ * @interface_name: (allow-none): Interface name of the remote object or %NULL to get the object proxy #GType.
+ * @user_data: User data (unused).
+ *
+ * A #GDBusProxyTypeFunc that maps @interface_name to the generated #GDBusObjectProxy<!-- -->- and #GDBusProxy<!-- -->-derived types.
+ *
+ * Returns: A #GDBusProxy<!-- -->-derived #GType if @interface_name is not %NULL, otherwise the #GType for #ObjectProxy.
+ */
+GType
+object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data G_GNUC_UNUSED)
+{
+ static gsize once_init_value = 0;
+ static GHashTable *lookup_hash;
+ GType ret;
+
+ if (interface_name == NULL)
+ return TYPE_OBJECT_PROXY;
+ if (g_once_init_enter (&once_init_value))
+ {
+ lookup_hash = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (lookup_hash, (gpointer) "org.ofono.Manager", GSIZE_TO_POINTER (TYPE_ORG_OFONO_MANAGER_PROXY));
+ g_once_init_leave (&once_init_value, 1);
+ }
+ ret = (GType) GPOINTER_TO_SIZE (g_hash_table_lookup (lookup_hash, interface_name));
+ if (ret == (GType) 0)
+ ret = G_TYPE_DBUS_PROXY;
+ return ret;
+}
+
+/**
+ * object_manager_client_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags 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 #GDBusObjectManagerClient using object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_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 object_manager_client_new_finish() to get the result of the operation.
+ *
+ * See object_manager_client_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+object_manager_client_new (
+ GDBusConnection *connection,
+ GDBusObjectManagerClientFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", object_manager_client_get_proxy_type, NULL);
+}
+
+/**
+ * object_manager_client_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to object_manager_client_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with object_manager_client_new().
+ *
+ * Returns: (transfer full) (type ObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+object_manager_client_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 G_DBUS_OBJECT_MANAGER (ret);
+ else
+ return NULL;
+}
+
+/**
+ * object_manager_client_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags 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 #GDBusObjectManagerClient using object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See object_manager_client_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type ObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+object_manager_client_new_sync (
+ GDBusConnection *connection,
+ GDBusObjectManagerClientFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", object_manager_client_get_proxy_type, NULL);
+ if (ret != NULL)
+ return G_DBUS_OBJECT_MANAGER (ret);
+ else
+ return NULL;
+}
+
+
+/**
+ * object_manager_client_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags 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 object_manager_client_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 object_manager_client_new_for_bus_finish() to get the result of the operation.
+ *
+ * See object_manager_client_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+object_manager_client_new_for_bus (
+ GBusType bus_type,
+ GDBusObjectManagerClientFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", object_manager_client_get_proxy_type, NULL);
+}
+
+/**
+ * object_manager_client_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to object_manager_client_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with object_manager_client_new_for_bus().
+ *
+ * Returns: (transfer full) (type ObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+object_manager_client_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 G_DBUS_OBJECT_MANAGER (ret);
+ else
+ return NULL;
+}
+
+/**
+ * object_manager_client_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags 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 object_manager_client_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See object_manager_client_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type ObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+object_manager_client_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusObjectManagerClientFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", object_manager_client_get_proxy_type, NULL);
+ if (ret != NULL)
+ return G_DBUS_OBJECT_MANAGER (ret);
+ else
+ return NULL;
+}
+
+
diff --git a/telephony-binding/gdbus/ofono_manager_interface.h b/telephony-binding/gdbus/ofono_manager_interface.h
new file mode 100644
index 0000000..f8522c9
--- /dev/null
+++ b/telephony-binding/gdbus/ofono_manager_interface.h
@@ -0,0 +1,356 @@
+/*
+ * Generated by gdbus-codegen 2.50.3. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __OFONO_MANAGER_INTERFACE_H__
+#define __OFONO_MANAGER_INTERFACE_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.ofono.Manager */
+
+#define TYPE_ORG_OFONO_MANAGER (org_ofono_manager_get_type ())
+#define ORG_OFONO_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_OFONO_MANAGER, OrgOfonoManager))
+#define IS_ORG_OFONO_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_OFONO_MANAGER))
+#define ORG_OFONO_MANAGER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_OFONO_MANAGER, OrgOfonoManagerIface))
+
+struct _OrgOfonoManager;
+typedef struct _OrgOfonoManager OrgOfonoManager;
+typedef struct _OrgOfonoManagerIface OrgOfonoManagerIface;
+
+struct _OrgOfonoManagerIface
+{
+ GTypeInterface parent_iface;
+
+
+ gboolean (*handle_get_modems) (
+ OrgOfonoManager *object,
+ GDBusMethodInvocation *invocation);
+
+ void (*modem_added) (
+ OrgOfonoManager *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1);
+
+ void (*modem_removed) (
+ OrgOfonoManager *object,
+ const gchar *arg_unnamed_arg0);
+
+};
+
+GType org_ofono_manager_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *org_ofono_manager_interface_info (void);
+guint org_ofono_manager_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void org_ofono_manager_complete_get_modems (
+ OrgOfonoManager *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *unnamed_arg0);
+
+
+
+/* D-Bus signal emissions functions: */
+void org_ofono_manager_emit_modem_added (
+ OrgOfonoManager *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1);
+
+void org_ofono_manager_emit_modem_removed (
+ OrgOfonoManager *object,
+ const gchar *arg_unnamed_arg0);
+
+
+
+/* D-Bus method calls: */
+void org_ofono_manager_call_get_modems (
+ OrgOfonoManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_manager_call_get_modems_finish (
+ OrgOfonoManager *proxy,
+ GVariant **out_unnamed_arg0,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_manager_call_get_modems_sync (
+ OrgOfonoManager *proxy,
+ GVariant **out_unnamed_arg0,
+ GCancellable *cancellable,
+ GError **error);
+
+
+
+/* ---- */
+
+#define TYPE_ORG_OFONO_MANAGER_PROXY (org_ofono_manager_proxy_get_type ())
+#define ORG_OFONO_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_OFONO_MANAGER_PROXY, OrgOfonoManagerProxy))
+#define ORG_OFONO_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_OFONO_MANAGER_PROXY, OrgOfonoManagerProxyClass))
+#define ORG_OFONO_MANAGER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_OFONO_MANAGER_PROXY, OrgOfonoManagerProxyClass))
+#define IS_ORG_OFONO_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_OFONO_MANAGER_PROXY))
+#define IS_ORG_OFONO_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_OFONO_MANAGER_PROXY))
+
+typedef struct _OrgOfonoManagerProxy OrgOfonoManagerProxy;
+typedef struct _OrgOfonoManagerProxyClass OrgOfonoManagerProxyClass;
+typedef struct _OrgOfonoManagerProxyPrivate OrgOfonoManagerProxyPrivate;
+
+struct _OrgOfonoManagerProxy
+{
+ /*< private >*/
+ GDBusProxy parent_instance;
+ OrgOfonoManagerProxyPrivate *priv;
+};
+
+struct _OrgOfonoManagerProxyClass
+{
+ GDBusProxyClass parent_class;
+};
+
+GType org_ofono_manager_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgOfonoManagerProxy, g_object_unref)
+#endif
+
+void org_ofono_manager_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+OrgOfonoManager *org_ofono_manager_proxy_new_finish (
+ GAsyncResult *res,
+ GError **error);
+OrgOfonoManager *org_ofono_manager_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_manager_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+OrgOfonoManager *org_ofono_manager_proxy_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error);
+OrgOfonoManager *org_ofono_manager_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+
+/* ---- */
+
+#define TYPE_ORG_OFONO_MANAGER_SKELETON (org_ofono_manager_skeleton_get_type ())
+#define ORG_OFONO_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_OFONO_MANAGER_SKELETON, OrgOfonoManagerSkeleton))
+#define ORG_OFONO_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_OFONO_MANAGER_SKELETON, OrgOfonoManagerSkeletonClass))
+#define ORG_OFONO_MANAGER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_OFONO_MANAGER_SKELETON, OrgOfonoManagerSkeletonClass))
+#define IS_ORG_OFONO_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_OFONO_MANAGER_SKELETON))
+#define IS_ORG_OFONO_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_OFONO_MANAGER_SKELETON))
+
+typedef struct _OrgOfonoManagerSkeleton OrgOfonoManagerSkeleton;
+typedef struct _OrgOfonoManagerSkeletonClass OrgOfonoManagerSkeletonClass;
+typedef struct _OrgOfonoManagerSkeletonPrivate OrgOfonoManagerSkeletonPrivate;
+
+struct _OrgOfonoManagerSkeleton
+{
+ /*< private >*/
+ GDBusInterfaceSkeleton parent_instance;
+ OrgOfonoManagerSkeletonPrivate *priv;
+};
+
+struct _OrgOfonoManagerSkeletonClass
+{
+ GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType org_ofono_manager_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgOfonoManagerSkeleton, g_object_unref)
+#endif
+
+OrgOfonoManager *org_ofono_manager_skeleton_new (void);
+
+
+/* ---- */
+
+#define TYPE_OBJECT (object_get_type ())
+#define OBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_OBJECT, Object))
+#define IS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_OBJECT))
+#define OBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_OBJECT, Object))
+
+struct _Object;
+typedef struct _Object Object;
+typedef struct _ObjectIface ObjectIface;
+
+struct _ObjectIface
+{
+ GTypeInterface parent_iface;
+};
+
+GType object_get_type (void) G_GNUC_CONST;
+
+OrgOfonoManager *object_get_org_ofono_manager (Object *object);
+OrgOfonoManager *object_peek_org_ofono_manager (Object *object);
+
+#define TYPE_OBJECT_PROXY (object_proxy_get_type ())
+#define OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_OBJECT_PROXY, ObjectProxy))
+#define OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_OBJECT_PROXY, ObjectProxyClass))
+#define OBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_OBJECT_PROXY, ObjectProxyClass))
+#define IS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_OBJECT_PROXY))
+#define IS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_OBJECT_PROXY))
+
+typedef struct _ObjectProxy ObjectProxy;
+typedef struct _ObjectProxyClass ObjectProxyClass;
+typedef struct _ObjectProxyPrivate ObjectProxyPrivate;
+
+struct _ObjectProxy
+{
+ /*< private >*/
+ GDBusObjectProxy parent_instance;
+ ObjectProxyPrivate *priv;
+};
+
+struct _ObjectProxyClass
+{
+ GDBusObjectProxyClass parent_class;
+};
+
+GType object_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ObjectProxy, g_object_unref)
+#endif
+
+ObjectProxy *object_proxy_new (GDBusConnection *connection, const gchar *object_path);
+
+#define TYPE_OBJECT_SKELETON (object_skeleton_get_type ())
+#define OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_OBJECT_SKELETON, ObjectSkeleton))
+#define OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_OBJECT_SKELETON, ObjectSkeletonClass))
+#define OBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_OBJECT_SKELETON, ObjectSkeletonClass))
+#define IS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_OBJECT_SKELETON))
+#define IS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_OBJECT_SKELETON))
+
+typedef struct _ObjectSkeleton ObjectSkeleton;
+typedef struct _ObjectSkeletonClass ObjectSkeletonClass;
+typedef struct _ObjectSkeletonPrivate ObjectSkeletonPrivate;
+
+struct _ObjectSkeleton
+{
+ /*< private >*/
+ GDBusObjectSkeleton parent_instance;
+ ObjectSkeletonPrivate *priv;
+};
+
+struct _ObjectSkeletonClass
+{
+ GDBusObjectSkeletonClass parent_class;
+};
+
+GType object_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ObjectSkeleton, g_object_unref)
+#endif
+
+ObjectSkeleton *object_skeleton_new (const gchar *object_path);
+void object_skeleton_set_org_ofono_manager (ObjectSkeleton *object, OrgOfonoManager *interface_);
+
+/* ---- */
+
+#define TYPE_OBJECT_MANAGER_CLIENT (object_manager_client_get_type ())
+#define OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_OBJECT_MANAGER_CLIENT, ObjectManagerClient))
+#define OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_OBJECT_MANAGER_CLIENT, ObjectManagerClientClass))
+#define OBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_OBJECT_MANAGER_CLIENT, ObjectManagerClientClass))
+#define IS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_OBJECT_MANAGER_CLIENT))
+#define IS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_OBJECT_MANAGER_CLIENT))
+
+typedef struct _ObjectManagerClient ObjectManagerClient;
+typedef struct _ObjectManagerClientClass ObjectManagerClientClass;
+typedef struct _ObjectManagerClientPrivate ObjectManagerClientPrivate;
+
+struct _ObjectManagerClient
+{
+ /*< private >*/
+ GDBusObjectManagerClient parent_instance;
+ ObjectManagerClientPrivate *priv;
+};
+
+struct _ObjectManagerClientClass
+{
+ GDBusObjectManagerClientClass parent_class;
+};
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ObjectManagerClient, g_object_unref)
+#endif
+
+GType object_manager_client_get_type (void) G_GNUC_CONST;
+
+GType object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager, const gchar *object_path, const gchar *interface_name, gpointer user_data);
+
+void object_manager_client_new (
+ GDBusConnection *connection,
+ GDBusObjectManagerClientFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+GDBusObjectManager *object_manager_client_new_finish (
+ GAsyncResult *res,
+ GError **error);
+GDBusObjectManager *object_manager_client_new_sync (
+ GDBusConnection *connection,
+ GDBusObjectManagerClientFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void object_manager_client_new_for_bus (
+ GBusType bus_type,
+ GDBusObjectManagerClientFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+GDBusObjectManager *object_manager_client_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error);
+GDBusObjectManager *object_manager_client_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusObjectManagerClientFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+
+G_END_DECLS
+
+#endif /* __OFONO_MANAGER_INTERFACE_H__ */
diff --git a/telephony-binding/gdbus/ofono_voicecall.c b/telephony-binding/gdbus/ofono_voicecall.c
new file mode 100644
index 0000000..44b6cec
--- /dev/null
+++ b/telephony-binding/gdbus/ofono_voicecall.c
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2017 Konsulko Group
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ofono_voicecall_interface.h"
+
+void ofono_hangup(const gchar *op)
+{
+ GError *error = NULL;
+
+ OrgOfonoVoiceCall *voice_call = org_ofono_voice_call_proxy_new_for_bus_sync(
+ G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE,
+ "org.ofono", op, NULL, NULL);
+
+ org_ofono_voice_call_call_hangup_sync(voice_call, NULL, &error);
+}
diff --git a/telephony-binding/gdbus/ofono_voicecall.h b/telephony-binding/gdbus/ofono_voicecall.h
new file mode 100644
index 0000000..efabc84
--- /dev/null
+++ b/telephony-binding/gdbus/ofono_voicecall.h
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2017 Konsulko Group
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <glib.h>
+
+void ofono_hangup(gchar *);
diff --git a/telephony-binding/gdbus/ofono_voicecall_interface.c b/telephony-binding/gdbus/ofono_voicecall_interface.c
new file mode 100644
index 0000000..c5260b3
--- /dev/null
+++ b/telephony-binding/gdbus/ofono_voicecall_interface.c
@@ -0,0 +1,1895 @@
+/*
+ * Generated by gdbus-codegen 2.50.3. 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 "ofono_voicecall_interface.h"
+
+#include <string.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:
+ {
+ /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
+ gdouble da = g_value_get_double (a);
+ gdouble db = g_value_get_double (b);
+ ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
+ }
+ 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.ofono.VoiceCall
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OrgOfonoVoiceCall
+ * @title: OrgOfonoVoiceCall
+ * @short_description: Generated C code for the org.ofono.VoiceCall D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-ofono-VoiceCall.top_of_page">org.ofono.VoiceCall</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.ofono.VoiceCall ---- */
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_method_info_get_properties_OUT_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "a{sv}",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_method_info_get_properties_OUT_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_method_info_get_properties_OUT_ARG_unnamed_arg0,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_method_info_get_properties =
+{
+ {
+ -1,
+ (gchar *) "GetProperties",
+ NULL,
+ (GDBusArgInfo **) &_org_ofono_voice_call_method_info_get_properties_OUT_ARG_pointers,
+ NULL
+ },
+ "handle-get-properties",
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_method_info_set_property_IN_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_method_info_set_property_IN_ARG_unnamed_arg1 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg1",
+ (gchar *) "v",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_method_info_set_property_IN_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_method_info_set_property_IN_ARG_unnamed_arg0,
+ &_org_ofono_voice_call_method_info_set_property_IN_ARG_unnamed_arg1,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_method_info_set_property =
+{
+ {
+ -1,
+ (gchar *) "SetProperty",
+ (GDBusArgInfo **) &_org_ofono_voice_call_method_info_set_property_IN_ARG_pointers,
+ NULL,
+ NULL
+ },
+ "handle-set-property",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_method_info_answer =
+{
+ {
+ -1,
+ (gchar *) "Answer",
+ NULL,
+ NULL,
+ NULL
+ },
+ "handle-answer",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_method_info_hangup =
+{
+ {
+ -1,
+ (gchar *) "Hangup",
+ NULL,
+ NULL,
+ NULL
+ },
+ "handle-hangup",
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_method_info_deflect_IN_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_method_info_deflect_IN_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_method_info_deflect_IN_ARG_unnamed_arg0,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_method_info_deflect =
+{
+ {
+ -1,
+ (gchar *) "Deflect",
+ (GDBusArgInfo **) &_org_ofono_voice_call_method_info_deflect_IN_ARG_pointers,
+ NULL,
+ NULL
+ },
+ "handle-deflect",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _org_ofono_voice_call_method_info_pointers[] =
+{
+ &_org_ofono_voice_call_method_info_get_properties,
+ &_org_ofono_voice_call_method_info_set_property,
+ &_org_ofono_voice_call_method_info_answer,
+ &_org_ofono_voice_call_method_info_hangup,
+ &_org_ofono_voice_call_method_info_deflect,
+ NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_signal_info_property_changed_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_signal_info_property_changed_ARG_unnamed_arg1 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg1",
+ (gchar *) "v",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_signal_info_property_changed_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_signal_info_property_changed_ARG_unnamed_arg0,
+ &_org_ofono_voice_call_signal_info_property_changed_ARG_unnamed_arg1,
+ NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_ofono_voice_call_signal_info_property_changed =
+{
+ {
+ -1,
+ (gchar *) "PropertyChanged",
+ (GDBusArgInfo **) &_org_ofono_voice_call_signal_info_property_changed_ARG_pointers,
+ NULL
+ },
+ "property-changed"
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_signal_info_disconnect_reason_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_signal_info_disconnect_reason_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_signal_info_disconnect_reason_ARG_unnamed_arg0,
+ NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_ofono_voice_call_signal_info_disconnect_reason =
+{
+ {
+ -1,
+ (gchar *) "DisconnectReason",
+ (GDBusArgInfo **) &_org_ofono_voice_call_signal_info_disconnect_reason_ARG_pointers,
+ NULL
+ },
+ "disconnect-reason"
+};
+
+static const _ExtendedGDBusSignalInfo * const _org_ofono_voice_call_signal_info_pointers[] =
+{
+ &_org_ofono_voice_call_signal_info_property_changed,
+ &_org_ofono_voice_call_signal_info_disconnect_reason,
+ NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _org_ofono_voice_call_interface_info =
+{
+ {
+ -1,
+ (gchar *) "org.ofono.VoiceCall",
+ (GDBusMethodInfo **) &_org_ofono_voice_call_method_info_pointers,
+ (GDBusSignalInfo **) &_org_ofono_voice_call_signal_info_pointers,
+ NULL,
+ NULL
+ },
+ "org-ofono-voice-call",
+};
+
+
+/**
+ * org_ofono_voice_call_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-ofono-VoiceCall.top_of_page">org.ofono.VoiceCall</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+org_ofono_voice_call_interface_info (void)
+{
+ return (GDBusInterfaceInfo *) &_org_ofono_voice_call_interface_info.parent_struct;
+}
+
+/**
+ * org_ofono_voice_call_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 #OrgOfonoVoiceCall interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+org_ofono_voice_call_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+ return property_id_begin - 1;
+}
+
+
+
+/**
+ * OrgOfonoVoiceCall:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCall.top_of_page">org.ofono.VoiceCall</link>.
+ */
+
+/**
+ * OrgOfonoVoiceCallIface:
+ * @parent_iface: The parent interface.
+ * @handle_answer: Handler for the #OrgOfonoVoiceCall::handle-answer signal.
+ * @handle_deflect: Handler for the #OrgOfonoVoiceCall::handle-deflect signal.
+ * @handle_get_properties: Handler for the #OrgOfonoVoiceCall::handle-get-properties signal.
+ * @handle_hangup: Handler for the #OrgOfonoVoiceCall::handle-hangup signal.
+ * @handle_set_property: Handler for the #OrgOfonoVoiceCall::handle-set-property signal.
+ * @disconnect_reason: Handler for the #OrgOfonoVoiceCall::disconnect-reason signal.
+ * @property_changed: Handler for the #OrgOfonoVoiceCall::property-changed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCall.top_of_page">org.ofono.VoiceCall</link>.
+ */
+
+typedef OrgOfonoVoiceCallIface OrgOfonoVoiceCallInterface;
+G_DEFINE_INTERFACE (OrgOfonoVoiceCall, org_ofono_voice_call, G_TYPE_OBJECT);
+
+static void
+org_ofono_voice_call_default_init (OrgOfonoVoiceCallIface *iface)
+{
+ /* GObject signals for incoming D-Bus method calls: */
+ /**
+ * OrgOfonoVoiceCall::handle-get-properties:
+ * @object: A #OrgOfonoVoiceCall.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCall.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_ofono_voice_call_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 (OrgOfonoVoiceCallIface, handle_get_properties),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * OrgOfonoVoiceCall::handle-set-property:
+ * @object: A #OrgOfonoVoiceCall.
+ * @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-ofono-VoiceCall.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_ofono_voice_call_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 (OrgOfonoVoiceCallIface, 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);
+
+ /**
+ * OrgOfonoVoiceCall::handle-answer:
+ * @object: A #OrgOfonoVoiceCall.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCall.Answer">Answer()</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_ofono_voice_call_complete_answer() 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-answer",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallIface, handle_answer),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * OrgOfonoVoiceCall::handle-hangup:
+ * @object: A #OrgOfonoVoiceCall.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCall.Hangup">Hangup()</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_ofono_voice_call_complete_hangup() 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-hangup",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallIface, handle_hangup),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * OrgOfonoVoiceCall::handle-deflect:
+ * @object: A #OrgOfonoVoiceCall.
+ * @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-ofono-VoiceCall.Deflect">Deflect()</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_ofono_voice_call_complete_deflect() 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-deflect",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallIface, handle_deflect),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+ /* GObject signals for received D-Bus signals: */
+ /**
+ * OrgOfonoVoiceCall::property-changed:
+ * @object: A #OrgOfonoVoiceCall.
+ * @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-ofono-VoiceCall.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 (OrgOfonoVoiceCallIface, property_changed),
+ NULL,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+ /**
+ * OrgOfonoVoiceCall::disconnect-reason:
+ * @object: A #OrgOfonoVoiceCall.
+ * @arg_unnamed_arg0: Argument.
+ *
+ * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-VoiceCall.DisconnectReason">"DisconnectReason"</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 ("disconnect-reason",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallIface, disconnect_reason),
+ NULL,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 1, G_TYPE_STRING);
+
+}
+
+/**
+ * org_ofono_voice_call_emit_property_changed:
+ * @object: A #OrgOfonoVoiceCall.
+ * @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-ofono-VoiceCall.PropertyChanged">"PropertyChanged"</link> D-Bus signal.
+ */
+void
+org_ofono_voice_call_emit_property_changed (
+ OrgOfonoVoiceCall *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_ofono_voice_call_emit_disconnect_reason:
+ * @object: A #OrgOfonoVoiceCall.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-VoiceCall.DisconnectReason">"DisconnectReason"</link> D-Bus signal.
+ */
+void
+org_ofono_voice_call_emit_disconnect_reason (
+ OrgOfonoVoiceCall *object,
+ const gchar *arg_unnamed_arg0)
+{
+ g_signal_emit_by_name (object, "disconnect-reason", arg_unnamed_arg0);
+}
+
+/**
+ * org_ofono_voice_call_call_get_properties:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @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-ofono-VoiceCall.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_ofono_voice_call_call_get_properties_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_call_get_properties_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_call_get_properties (
+ OrgOfonoVoiceCall *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_ofono_voice_call_call_get_properties_finish:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_call_get_properties().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_call_get_properties().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_call_get_properties_finish (
+ OrgOfonoVoiceCall *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_ofono_voice_call_call_get_properties_sync:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @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-ofono-VoiceCall.GetProperties">GetProperties()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_call_get_properties() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_call_get_properties_sync (
+ OrgOfonoVoiceCall *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_ofono_voice_call_call_set_property:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @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-ofono-VoiceCall.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_ofono_voice_call_call_set_property_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_call_set_property_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_call_set_property (
+ OrgOfonoVoiceCall *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_ofono_voice_call_call_set_property_finish:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_call_set_property().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_call_set_property().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_call_set_property_finish (
+ OrgOfonoVoiceCall *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_ofono_voice_call_call_set_property_sync:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @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-ofono-VoiceCall.SetProperty">SetProperty()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_call_set_property() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_call_set_property_sync (
+ OrgOfonoVoiceCall *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_ofono_voice_call_call_answer:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @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-ofono-VoiceCall.Answer">Answer()</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_ofono_voice_call_call_answer_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_call_answer_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_call_answer (
+ OrgOfonoVoiceCall *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "Answer",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_call_answer_finish:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_call_answer().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_call_answer().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_call_answer_finish (
+ OrgOfonoVoiceCall *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_ofono_voice_call_call_answer_sync:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCall.Answer">Answer()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_call_answer() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_call_answer_sync (
+ OrgOfonoVoiceCall *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "Answer",
+ 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_ofono_voice_call_call_hangup:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @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-ofono-VoiceCall.Hangup">Hangup()</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_ofono_voice_call_call_hangup_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_call_hangup_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_call_hangup (
+ OrgOfonoVoiceCall *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "Hangup",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_call_hangup_finish:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_call_hangup().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_call_hangup().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_call_hangup_finish (
+ OrgOfonoVoiceCall *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_ofono_voice_call_call_hangup_sync:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCall.Hangup">Hangup()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_call_hangup() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_call_hangup_sync (
+ OrgOfonoVoiceCall *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "Hangup",
+ 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_ofono_voice_call_call_deflect:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @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-ofono-VoiceCall.Deflect">Deflect()</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_ofono_voice_call_call_deflect_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_call_deflect_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_call_deflect (
+ OrgOfonoVoiceCall *proxy,
+ const gchar *arg_unnamed_arg0,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "Deflect",
+ g_variant_new ("(s)",
+ arg_unnamed_arg0),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_call_deflect_finish:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_call_deflect().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_call_deflect().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_call_deflect_finish (
+ OrgOfonoVoiceCall *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_ofono_voice_call_call_deflect_sync:
+ * @proxy: A #OrgOfonoVoiceCallProxy.
+ * @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-ofono-VoiceCall.Deflect">Deflect()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_call_deflect() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_call_deflect_sync (
+ OrgOfonoVoiceCall *proxy,
+ const gchar *arg_unnamed_arg0,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "Deflect",
+ g_variant_new ("(s)",
+ arg_unnamed_arg0),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_ofono_voice_call_complete_get_properties:
+ * @object: A #OrgOfonoVoiceCall.
+ * @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-ofono-VoiceCall.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_ofono_voice_call_complete_get_properties (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *unnamed_arg0)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("(@a{sv})",
+ unnamed_arg0));
+}
+
+/**
+ * org_ofono_voice_call_complete_set_property:
+ * @object: A #OrgOfonoVoiceCall.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCall.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_ofono_voice_call_complete_set_property (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * org_ofono_voice_call_complete_answer:
+ * @object: A #OrgOfonoVoiceCall.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCall.Answer">Answer()</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_ofono_voice_call_complete_answer (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * org_ofono_voice_call_complete_hangup:
+ * @object: A #OrgOfonoVoiceCall.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCall.Hangup">Hangup()</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_ofono_voice_call_complete_hangup (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * org_ofono_voice_call_complete_deflect:
+ * @object: A #OrgOfonoVoiceCall.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCall.Deflect">Deflect()</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_ofono_voice_call_complete_deflect (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgOfonoVoiceCallProxy:
+ *
+ * The #OrgOfonoVoiceCallProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgOfonoVoiceCallProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgOfonoVoiceCallProxy.
+ */
+
+struct _OrgOfonoVoiceCallProxyPrivate
+{
+ GData *qdata;
+};
+
+static void org_ofono_voice_call_proxy_iface_init (OrgOfonoVoiceCallIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OrgOfonoVoiceCallProxy, org_ofono_voice_call_proxy, G_TYPE_DBUS_PROXY,
+ G_ADD_PRIVATE (OrgOfonoVoiceCallProxy)
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_OFONO_VOICE_CALL, org_ofono_voice_call_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OrgOfonoVoiceCallProxy, org_ofono_voice_call_proxy, G_TYPE_DBUS_PROXY,
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_OFONO_VOICE_CALL, org_ofono_voice_call_proxy_iface_init));
+
+#endif
+static void
+org_ofono_voice_call_proxy_finalize (GObject *object)
+{
+ OrgOfonoVoiceCallProxy *proxy = ORG_OFONO_VOICE_CALL_PROXY (object);
+ g_datalist_clear (&proxy->priv->qdata);
+ G_OBJECT_CLASS (org_ofono_voice_call_proxy_parent_class)->finalize (object);
+}
+
+static void
+org_ofono_voice_call_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+org_ofono_voice_call_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+org_ofono_voice_call_proxy_g_signal (GDBusProxy *proxy,
+ const gchar *sender_name G_GNUC_UNUSED,
+ 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_ofono_voice_call_interface_info.parent_struct, signal_name);
+ if (info == NULL)
+ return;
+ num_params = g_variant_n_children (parameters);
+ paramv = g_new0 (GValue, num_params + 1);
+ g_value_init (&paramv[0], TYPE_ORG_OFONO_VOICE_CALL);
+ g_value_set_object (&paramv[0], proxy);
+ g_variant_iter_init (&iter, parameters);
+ n = 1;
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_OFONO_VOICE_CALL);
+ 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_ofono_voice_call_proxy_g_properties_changed (GDBusProxy *_proxy,
+ GVariant *changed_properties,
+ const gchar *const *invalidated_properties)
+{
+ OrgOfonoVoiceCallProxy *proxy = ORG_OFONO_VOICE_CALL_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_ofono_voice_call_interface_info.parent_struct, 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_ofono_voice_call_interface_info.parent_struct, 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_ofono_voice_call_proxy_init (OrgOfonoVoiceCallProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ proxy->priv = org_ofono_voice_call_proxy_get_instance_private (proxy);
+#else
+ proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_OFONO_VOICE_CALL_PROXY, OrgOfonoVoiceCallProxyPrivate);
+#endif
+
+ g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_ofono_voice_call_interface_info ());
+}
+
+static void
+org_ofono_voice_call_proxy_class_init (OrgOfonoVoiceCallProxyClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusProxyClass *proxy_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = org_ofono_voice_call_proxy_finalize;
+ gobject_class->get_property = org_ofono_voice_call_proxy_get_property;
+ gobject_class->set_property = org_ofono_voice_call_proxy_set_property;
+
+ proxy_class = G_DBUS_PROXY_CLASS (klass);
+ proxy_class->g_signal = org_ofono_voice_call_proxy_g_signal;
+ proxy_class->g_properties_changed = org_ofono_voice_call_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (OrgOfonoVoiceCallProxyPrivate));
+#endif
+}
+
+static void
+org_ofono_voice_call_proxy_iface_init (OrgOfonoVoiceCallIface *iface)
+{
+}
+
+/**
+ * org_ofono_voice_call_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-ofono-VoiceCall.top_of_page">org.ofono.VoiceCall</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_ofono_voice_call_proxy_new_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_ofono_voice_call_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_ORG_OFONO_VOICE_CALL_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.ofono.VoiceCall", NULL);
+}
+
+/**
+ * org_ofono_voice_call_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_ofono_voice_call_proxy_new().
+ *
+ * Returns: (transfer full) (type OrgOfonoVoiceCallProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgOfonoVoiceCall *
+org_ofono_voice_call_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_OFONO_VOICE_CALL (ret);
+ else
+ return NULL;
+}
+
+/**
+ * org_ofono_voice_call_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-ofono-VoiceCall.top_of_page">org.ofono.VoiceCall</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgOfonoVoiceCallProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgOfonoVoiceCall *
+org_ofono_voice_call_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_ORG_OFONO_VOICE_CALL_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.VoiceCall", NULL);
+ if (ret != NULL)
+ return ORG_OFONO_VOICE_CALL (ret);
+ else
+ return NULL;
+}
+
+
+/**
+ * org_ofono_voice_call_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_ofono_voice_call_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_ofono_voice_call_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_ofono_voice_call_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_ORG_OFONO_VOICE_CALL_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.ofono.VoiceCall", NULL);
+}
+
+/**
+ * org_ofono_voice_call_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_ofono_voice_call_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OrgOfonoVoiceCallProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgOfonoVoiceCall *
+org_ofono_voice_call_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_OFONO_VOICE_CALL (ret);
+ else
+ return NULL;
+}
+
+/**
+ * org_ofono_voice_call_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_ofono_voice_call_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgOfonoVoiceCallProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgOfonoVoiceCall *
+org_ofono_voice_call_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_ORG_OFONO_VOICE_CALL_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.VoiceCall", NULL);
+ if (ret != NULL)
+ return ORG_OFONO_VOICE_CALL (ret);
+ else
+ return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgOfonoVoiceCallSkeleton:
+ *
+ * The #OrgOfonoVoiceCallSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgOfonoVoiceCallSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgOfonoVoiceCallSkeleton.
+ */
+
+struct _OrgOfonoVoiceCallSkeletonPrivate
+{
+ GValue *properties;
+ GList *changed_properties;
+ GSource *changed_properties_idle_source;
+ GMainContext *context;
+ GMutex lock;
+};
+
+static void
+_org_ofono_voice_call_skeleton_handle_method_call (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ OrgOfonoVoiceCallSkeleton *skeleton = ORG_OFONO_VOICE_CALL_SKELETON (user_data);
+ _ExtendedGDBusMethodInfo *info;
+ GVariantIter iter;
+ GVariant *child;
+ GValue *paramv;
+ guint num_params;
+ guint num_extra;
+ guint n;
+ guint signal_id;
+ GValue return_value = G_VALUE_INIT;
+ info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+ g_assert (info != NULL);
+ num_params = g_variant_n_children (parameters);
+ num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra);
+ n = 0;
+ g_value_init (&paramv[n], TYPE_ORG_OFONO_VOICE_CALL);
+ g_value_set_object (&paramv[n++], skeleton);
+ g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+ g_value_set_object (&paramv[n++], invocation);
+ if (info->pass_fdlist)
+ {
+#ifdef G_OS_UNIX
+ g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+ g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+ g_assert_not_reached ();
+#endif
+ }
+ g_variant_iter_init (&iter, parameters);
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_OFONO_VOICE_CALL);
+ 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_ofono_voice_call_skeleton_handle_get_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GError **error,
+ gpointer user_data)
+{
+ OrgOfonoVoiceCallSkeleton *skeleton = ORG_OFONO_VOICE_CALL_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ GVariant *ret;
+ ret = NULL;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_ofono_voice_call_interface_info.parent_struct, 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_ofono_voice_call_skeleton_handle_set_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GVariant *variant,
+ GError **error,
+ gpointer user_data)
+{
+ OrgOfonoVoiceCallSkeleton *skeleton = ORG_OFONO_VOICE_CALL_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ gboolean ret;
+ ret = FALSE;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_ofono_voice_call_interface_info.parent_struct, 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_ofono_voice_call_skeleton_vtable =
+{
+ _org_ofono_voice_call_skeleton_handle_method_call,
+ _org_ofono_voice_call_skeleton_handle_get_property,
+ _org_ofono_voice_call_skeleton_handle_set_property,
+ {NULL}
+};
+
+static GDBusInterfaceInfo *
+org_ofono_voice_call_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return org_ofono_voice_call_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+org_ofono_voice_call_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return (GDBusInterfaceVTable *) &_org_ofono_voice_call_skeleton_vtable;
+}
+
+static GVariant *
+org_ofono_voice_call_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+ OrgOfonoVoiceCallSkeleton *skeleton = ORG_OFONO_VOICE_CALL_SKELETON (_skeleton);
+
+ GVariantBuilder builder;
+ guint n;
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+ if (_org_ofono_voice_call_interface_info.parent_struct.properties == NULL)
+ goto out;
+ for (n = 0; _org_ofono_voice_call_interface_info.parent_struct.properties[n] != NULL; n++)
+ {
+ GDBusPropertyInfo *info = _org_ofono_voice_call_interface_info.parent_struct.properties[n];
+ if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+ {
+ GVariant *value;
+ value = _org_ofono_voice_call_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.ofono.VoiceCall", 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_ofono_voice_call_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_org_ofono_voice_call_on_signal_property_changed (
+ OrgOfonoVoiceCall *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1)
+{
+ OrgOfonoVoiceCallSkeleton *skeleton = ORG_OFONO_VOICE_CALL_SKELETON (object);
+
+ GList *connections, *l;
+ GVariant *signal_variant;
+ connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+ signal_variant = g_variant_ref_sink (g_variant_new ("(s@v)",
+ arg_unnamed_arg0,
+ arg_unnamed_arg1));
+ for (l = connections; l != NULL; l = l->next)
+ {
+ GDBusConnection *connection = l->data;
+ g_dbus_connection_emit_signal (connection,
+ NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCall", "PropertyChanged",
+ signal_variant, NULL);
+ }
+ g_variant_unref (signal_variant);
+ g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_org_ofono_voice_call_on_signal_disconnect_reason (
+ OrgOfonoVoiceCall *object,
+ const gchar *arg_unnamed_arg0)
+{
+ OrgOfonoVoiceCallSkeleton *skeleton = ORG_OFONO_VOICE_CALL_SKELETON (object);
+
+ GList *connections, *l;
+ GVariant *signal_variant;
+ connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+ signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
+ arg_unnamed_arg0));
+ for (l = connections; l != NULL; l = l->next)
+ {
+ GDBusConnection *connection = l->data;
+ g_dbus_connection_emit_signal (connection,
+ NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCall", "DisconnectReason",
+ signal_variant, NULL);
+ }
+ g_variant_unref (signal_variant);
+ g_list_free_full (connections, g_object_unref);
+}
+
+static void org_ofono_voice_call_skeleton_iface_init (OrgOfonoVoiceCallIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OrgOfonoVoiceCallSkeleton, org_ofono_voice_call_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_ADD_PRIVATE (OrgOfonoVoiceCallSkeleton)
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_OFONO_VOICE_CALL, org_ofono_voice_call_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OrgOfonoVoiceCallSkeleton, org_ofono_voice_call_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_OFONO_VOICE_CALL, org_ofono_voice_call_skeleton_iface_init));
+
+#endif
+static void
+org_ofono_voice_call_skeleton_finalize (GObject *object)
+{
+ OrgOfonoVoiceCallSkeleton *skeleton = ORG_OFONO_VOICE_CALL_SKELETON (object);
+ g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+ if (skeleton->priv->changed_properties_idle_source != NULL)
+ g_source_destroy (skeleton->priv->changed_properties_idle_source);
+ g_main_context_unref (skeleton->priv->context);
+ g_mutex_clear (&skeleton->priv->lock);
+ G_OBJECT_CLASS (org_ofono_voice_call_skeleton_parent_class)->finalize (object);
+}
+
+static void
+org_ofono_voice_call_skeleton_init (OrgOfonoVoiceCallSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ skeleton->priv = org_ofono_voice_call_skeleton_get_instance_private (skeleton);
+#else
+ skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_OFONO_VOICE_CALL_SKELETON, OrgOfonoVoiceCallSkeletonPrivate);
+#endif
+
+ g_mutex_init (&skeleton->priv->lock);
+ skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+org_ofono_voice_call_skeleton_class_init (OrgOfonoVoiceCallSkeletonClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusInterfaceSkeletonClass *skeleton_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = org_ofono_voice_call_skeleton_finalize;
+
+ skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+ skeleton_class->get_info = org_ofono_voice_call_skeleton_dbus_interface_get_info;
+ skeleton_class->get_properties = org_ofono_voice_call_skeleton_dbus_interface_get_properties;
+ skeleton_class->flush = org_ofono_voice_call_skeleton_dbus_interface_flush;
+ skeleton_class->get_vtable = org_ofono_voice_call_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (OrgOfonoVoiceCallSkeletonPrivate));
+#endif
+}
+
+static void
+org_ofono_voice_call_skeleton_iface_init (OrgOfonoVoiceCallIface *iface)
+{
+ iface->property_changed = _org_ofono_voice_call_on_signal_property_changed;
+ iface->disconnect_reason = _org_ofono_voice_call_on_signal_disconnect_reason;
+}
+
+/**
+ * org_ofono_voice_call_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCall.top_of_page">org.ofono.VoiceCall</link>.
+ *
+ * Returns: (transfer full) (type OrgOfonoVoiceCallSkeleton): The skeleton object.
+ */
+OrgOfonoVoiceCall *
+org_ofono_voice_call_skeleton_new (void)
+{
+ return ORG_OFONO_VOICE_CALL (g_object_new (TYPE_ORG_OFONO_VOICE_CALL_SKELETON, NULL));
+}
+
diff --git a/telephony-binding/gdbus/ofono_voicecall_interface.h b/telephony-binding/gdbus/ofono_voicecall_interface.h
new file mode 100644
index 0000000..883df40
--- /dev/null
+++ b/telephony-binding/gdbus/ofono_voicecall_interface.h
@@ -0,0 +1,305 @@
+/*
+ * Generated by gdbus-codegen 2.50.3. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __OFONO_VOICECALL_INTERFACE_H__
+#define __OFONO_VOICECALL_INTERFACE_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.ofono.VoiceCall */
+
+#define TYPE_ORG_OFONO_VOICE_CALL (org_ofono_voice_call_get_type ())
+#define ORG_OFONO_VOICE_CALL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_OFONO_VOICE_CALL, OrgOfonoVoiceCall))
+#define IS_ORG_OFONO_VOICE_CALL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_OFONO_VOICE_CALL))
+#define ORG_OFONO_VOICE_CALL_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_OFONO_VOICE_CALL, OrgOfonoVoiceCallIface))
+
+struct _OrgOfonoVoiceCall;
+typedef struct _OrgOfonoVoiceCall OrgOfonoVoiceCall;
+typedef struct _OrgOfonoVoiceCallIface OrgOfonoVoiceCallIface;
+
+struct _OrgOfonoVoiceCallIface
+{
+ GTypeInterface parent_iface;
+
+
+ gboolean (*handle_answer) (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_deflect) (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *arg_unnamed_arg0);
+
+ gboolean (*handle_get_properties) (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_hangup) (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_set_property) (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1);
+
+ void (*disconnect_reason) (
+ OrgOfonoVoiceCall *object,
+ const gchar *arg_unnamed_arg0);
+
+ void (*property_changed) (
+ OrgOfonoVoiceCall *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1);
+
+};
+
+GType org_ofono_voice_call_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *org_ofono_voice_call_interface_info (void);
+guint org_ofono_voice_call_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void org_ofono_voice_call_complete_get_properties (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *unnamed_arg0);
+
+void org_ofono_voice_call_complete_set_property (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation);
+
+void org_ofono_voice_call_complete_answer (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation);
+
+void org_ofono_voice_call_complete_hangup (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation);
+
+void org_ofono_voice_call_complete_deflect (
+ OrgOfonoVoiceCall *object,
+ GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus signal emissions functions: */
+void org_ofono_voice_call_emit_property_changed (
+ OrgOfonoVoiceCall *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1);
+
+void org_ofono_voice_call_emit_disconnect_reason (
+ OrgOfonoVoiceCall *object,
+ const gchar *arg_unnamed_arg0);
+
+
+
+/* D-Bus method calls: */
+void org_ofono_voice_call_call_get_properties (
+ OrgOfonoVoiceCall *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_call_get_properties_finish (
+ OrgOfonoVoiceCall *proxy,
+ GVariant **out_unnamed_arg0,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_call_get_properties_sync (
+ OrgOfonoVoiceCall *proxy,
+ GVariant **out_unnamed_arg0,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_call_set_property (
+ OrgOfonoVoiceCall *proxy,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_call_set_property_finish (
+ OrgOfonoVoiceCall *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_call_set_property_sync (
+ OrgOfonoVoiceCall *proxy,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_call_answer (
+ OrgOfonoVoiceCall *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_call_answer_finish (
+ OrgOfonoVoiceCall *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_call_answer_sync (
+ OrgOfonoVoiceCall *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_call_hangup (
+ OrgOfonoVoiceCall *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_call_hangup_finish (
+ OrgOfonoVoiceCall *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_call_hangup_sync (
+ OrgOfonoVoiceCall *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_call_deflect (
+ OrgOfonoVoiceCall *proxy,
+ const gchar *arg_unnamed_arg0,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_call_deflect_finish (
+ OrgOfonoVoiceCall *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_call_deflect_sync (
+ OrgOfonoVoiceCall *proxy,
+ const gchar *arg_unnamed_arg0,
+ GCancellable *cancellable,
+ GError **error);
+
+
+
+/* ---- */
+
+#define TYPE_ORG_OFONO_VOICE_CALL_PROXY (org_ofono_voice_call_proxy_get_type ())
+#define ORG_OFONO_VOICE_CALL_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_OFONO_VOICE_CALL_PROXY, OrgOfonoVoiceCallProxy))
+#define ORG_OFONO_VOICE_CALL_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_OFONO_VOICE_CALL_PROXY, OrgOfonoVoiceCallProxyClass))
+#define ORG_OFONO_VOICE_CALL_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_OFONO_VOICE_CALL_PROXY, OrgOfonoVoiceCallProxyClass))
+#define IS_ORG_OFONO_VOICE_CALL_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_OFONO_VOICE_CALL_PROXY))
+#define IS_ORG_OFONO_VOICE_CALL_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_OFONO_VOICE_CALL_PROXY))
+
+typedef struct _OrgOfonoVoiceCallProxy OrgOfonoVoiceCallProxy;
+typedef struct _OrgOfonoVoiceCallProxyClass OrgOfonoVoiceCallProxyClass;
+typedef struct _OrgOfonoVoiceCallProxyPrivate OrgOfonoVoiceCallProxyPrivate;
+
+struct _OrgOfonoVoiceCallProxy
+{
+ /*< private >*/
+ GDBusProxy parent_instance;
+ OrgOfonoVoiceCallProxyPrivate *priv;
+};
+
+struct _OrgOfonoVoiceCallProxyClass
+{
+ GDBusProxyClass parent_class;
+};
+
+GType org_ofono_voice_call_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgOfonoVoiceCallProxy, g_object_unref)
+#endif
+
+void org_ofono_voice_call_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+OrgOfonoVoiceCall *org_ofono_voice_call_proxy_new_finish (
+ GAsyncResult *res,
+ GError **error);
+OrgOfonoVoiceCall *org_ofono_voice_call_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+OrgOfonoVoiceCall *org_ofono_voice_call_proxy_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error);
+OrgOfonoVoiceCall *org_ofono_voice_call_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+
+/* ---- */
+
+#define TYPE_ORG_OFONO_VOICE_CALL_SKELETON (org_ofono_voice_call_skeleton_get_type ())
+#define ORG_OFONO_VOICE_CALL_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_OFONO_VOICE_CALL_SKELETON, OrgOfonoVoiceCallSkeleton))
+#define ORG_OFONO_VOICE_CALL_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_OFONO_VOICE_CALL_SKELETON, OrgOfonoVoiceCallSkeletonClass))
+#define ORG_OFONO_VOICE_CALL_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_OFONO_VOICE_CALL_SKELETON, OrgOfonoVoiceCallSkeletonClass))
+#define IS_ORG_OFONO_VOICE_CALL_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_OFONO_VOICE_CALL_SKELETON))
+#define IS_ORG_OFONO_VOICE_CALL_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_OFONO_VOICE_CALL_SKELETON))
+
+typedef struct _OrgOfonoVoiceCallSkeleton OrgOfonoVoiceCallSkeleton;
+typedef struct _OrgOfonoVoiceCallSkeletonClass OrgOfonoVoiceCallSkeletonClass;
+typedef struct _OrgOfonoVoiceCallSkeletonPrivate OrgOfonoVoiceCallSkeletonPrivate;
+
+struct _OrgOfonoVoiceCallSkeleton
+{
+ /*< private >*/
+ GDBusInterfaceSkeleton parent_instance;
+ OrgOfonoVoiceCallSkeletonPrivate *priv;
+};
+
+struct _OrgOfonoVoiceCallSkeletonClass
+{
+ GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType org_ofono_voice_call_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgOfonoVoiceCallSkeleton, g_object_unref)
+#endif
+
+OrgOfonoVoiceCall *org_ofono_voice_call_skeleton_new (void);
+
+
+G_END_DECLS
+
+#endif /* __OFONO_VOICECALL_INTERFACE_H__ */
diff --git a/telephony-binding/gdbus/ofono_voicecallmanager.c b/telephony-binding/gdbus/ofono_voicecallmanager.c
new file mode 100644
index 0000000..2beadc0
--- /dev/null
+++ b/telephony-binding/gdbus/ofono_voicecallmanager.c
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2017 Konsulko Group
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <string.h>
+
+#define _GNU_SOURCE
+#include <afb/afb-binding.h>
+
+#include "ofono_voicecallmanager_interface.h"
+
+static const struct afb_binding_interface *interface;
+
+static void call_added(OrgOfonoVoiceCallManager *manager,
+ gchar *op,
+ GVariant *properties)
+{
+ GVariantIter *iter;
+ gchar *key;
+ GVariant *value;
+ const gchar *state, *clip = NULL;
+
+ g_variant_get(properties, "a{sv}", &iter);
+ while (g_variant_iter_loop(iter, "{sv}", &key, &value)) {
+ if (!strcmp(key, "State"))
+ state = g_variant_get_string(value, NULL);
+ else if (!strcmp(key, "LineIdentification")) {
+ clip = g_variant_get_string(value, NULL);
+ }
+ }
+
+ if (!strcmp(state, "incoming")) {
+ g_signal_emit_by_name(manager, "incoming-call", op, clip ? clip : "");
+ }
+}
+
+const OrgOfonoVoiceCallManager
+*ofono_voicecallmanager_init(const struct afb_binding_interface *iface,
+ const gchar *op,
+ void (*incoming_call)(OrgOfonoVoiceCallManager *manager,gchar *))
+{
+ interface = iface;
+
+ OrgOfonoVoiceCallManager *manager = org_ofono_voice_call_manager_proxy_new_for_bus_sync(
+ G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE,
+ "org.ofono", op, NULL, NULL);
+
+ g_signal_new("incoming-call",
+ G_TYPE_OBJECT,
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 2,
+ G_TYPE_STRING,
+ G_TYPE_STRING);
+
+ if (g_signal_connect(G_OBJECT(manager), "incoming-call", G_CALLBACK(incoming_call), NULL) <= 0) {
+ ERROR(interface, "Failed to connect to signal call-added\n");
+ }
+
+ if (g_signal_connect(manager, "call-added", G_CALLBACK(call_added), NULL) <= 0) {
+ ERROR(interface, "Failed to connect to signal call-added\n");
+ }
+
+ return manager;
+}
+
+gchar *ofono_voicecallmanager_dial(OrgOfonoVoiceCallManager *manager,
+ const gchar *number,
+ const gchar *cid)
+{
+ gchar *out = NULL;
+ GError *error = NULL;
+
+ if (!manager) {
+ ERROR(interface, "Ofono VoiceCallmanager uninitialized\n");
+ return NULL;
+ }
+
+ org_ofono_voice_call_manager_call_dial_sync(manager, number, cid, &out, NULL, &error);
+ if (error != NULL)
+ out = NULL;
+
+ return out;
+}
+
+void ofono_voicecallmanager_hangup_all(OrgOfonoVoiceCallManager *manager)
+{
+ GError *error = NULL;
+
+ if (!manager) {
+ ERROR(interface, "Ofono VoiceCallmanager uninitialized\n");
+ return;
+ }
+
+ org_ofono_voice_call_manager_call_hangup_all_sync(manager, NULL, &error);
+}
diff --git a/telephony-binding/gdbus/ofono_voicecallmanager.h b/telephony-binding/gdbus/ofono_voicecallmanager.h
new file mode 100644
index 0000000..a5c3ae1
--- /dev/null
+++ b/telephony-binding/gdbus/ofono_voicecallmanager.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2017 Konsulko Group
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <glib.h>
+
+#include "ofono_voicecallmanager_interface.h"
+
+OrgOfonoVoiceCallManager *ofono_voicecallmanager_init(const struct afb_binding_interface *iface, const gchar *, void(*)(OrgOfonoVoiceCallManager *manager, gchar *, gchar *));
+gchar *ofono_voicecallmanager_dial(OrgOfonoVoiceCallManager *, gchar *, gchar *);
+void ofono_hangup_all(OrgOfonoVoiceCallManager *);
diff --git a/telephony-binding/gdbus/ofono_voicecallmanager_interface.c b/telephony-binding/gdbus/ofono_voicecallmanager_interface.c
new file mode 100644
index 0000000..88c86da
--- /dev/null
+++ b/telephony-binding/gdbus/ofono_voicecallmanager_interface.c
@@ -0,0 +1,3336 @@
+/*
+ * Generated by gdbus-codegen 2.50.3. 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 "ofono_voicecallmanager_interface.h"
+
+#include <string.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:
+ {
+ /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
+ gdouble da = g_value_get_double (a);
+ gdouble db = g_value_get_double (b);
+ ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
+ }
+ 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.ofono.VoiceCallManager
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OrgOfonoVoiceCallManager
+ * @title: OrgOfonoVoiceCallManager
+ * @short_description: Generated C code for the org.ofono.VoiceCallManager D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.ofono.VoiceCallManager ---- */
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_method_info_get_properties_OUT_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "a{sv}",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_manager_method_info_get_properties_OUT_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_manager_method_info_get_properties_OUT_ARG_unnamed_arg0,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_manager_method_info_get_properties =
+{
+ {
+ -1,
+ (gchar *) "GetProperties",
+ NULL,
+ (GDBusArgInfo **) &_org_ofono_voice_call_manager_method_info_get_properties_OUT_ARG_pointers,
+ NULL
+ },
+ "handle-get-properties",
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_method_info_dial_IN_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_method_info_dial_IN_ARG_unnamed_arg1 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg1",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_manager_method_info_dial_IN_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_manager_method_info_dial_IN_ARG_unnamed_arg0,
+ &_org_ofono_voice_call_manager_method_info_dial_IN_ARG_unnamed_arg1,
+ NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_method_info_dial_OUT_ARG_unnamed_arg2 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg2",
+ (gchar *) "o",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_manager_method_info_dial_OUT_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_manager_method_info_dial_OUT_ARG_unnamed_arg2,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_manager_method_info_dial =
+{
+ {
+ -1,
+ (gchar *) "Dial",
+ (GDBusArgInfo **) &_org_ofono_voice_call_manager_method_info_dial_IN_ARG_pointers,
+ (GDBusArgInfo **) &_org_ofono_voice_call_manager_method_info_dial_OUT_ARG_pointers,
+ NULL
+ },
+ "handle-dial",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_manager_method_info_transfer =
+{
+ {
+ -1,
+ (gchar *) "Transfer",
+ NULL,
+ NULL,
+ NULL
+ },
+ "handle-transfer",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_manager_method_info_swap_calls =
+{
+ {
+ -1,
+ (gchar *) "SwapCalls",
+ NULL,
+ NULL,
+ NULL
+ },
+ "handle-swap-calls",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_manager_method_info_release_and_answer =
+{
+ {
+ -1,
+ (gchar *) "ReleaseAndAnswer",
+ NULL,
+ NULL,
+ NULL
+ },
+ "handle-release-and-answer",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_manager_method_info_hold_and_answer =
+{
+ {
+ -1,
+ (gchar *) "HoldAndAnswer",
+ NULL,
+ NULL,
+ NULL
+ },
+ "handle-hold-and-answer",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_manager_method_info_hangup_all =
+{
+ {
+ -1,
+ (gchar *) "HangupAll",
+ NULL,
+ NULL,
+ NULL
+ },
+ "handle-hangup-all",
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_method_info_private_chat_IN_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "o",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_manager_method_info_private_chat_IN_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_manager_method_info_private_chat_IN_ARG_unnamed_arg0,
+ NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_method_info_private_chat_OUT_ARG_unnamed_arg1 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg1",
+ (gchar *) "ao",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_manager_method_info_private_chat_OUT_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_manager_method_info_private_chat_OUT_ARG_unnamed_arg1,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_manager_method_info_private_chat =
+{
+ {
+ -1,
+ (gchar *) "PrivateChat",
+ (GDBusArgInfo **) &_org_ofono_voice_call_manager_method_info_private_chat_IN_ARG_pointers,
+ (GDBusArgInfo **) &_org_ofono_voice_call_manager_method_info_private_chat_OUT_ARG_pointers,
+ NULL
+ },
+ "handle-private-chat",
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_method_info_create_multiparty_OUT_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "ao",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_manager_method_info_create_multiparty_OUT_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_manager_method_info_create_multiparty_OUT_ARG_unnamed_arg0,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_manager_method_info_create_multiparty =
+{
+ {
+ -1,
+ (gchar *) "CreateMultiparty",
+ NULL,
+ (GDBusArgInfo **) &_org_ofono_voice_call_manager_method_info_create_multiparty_OUT_ARG_pointers,
+ NULL
+ },
+ "handle-create-multiparty",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_manager_method_info_hangup_multiparty =
+{
+ {
+ -1,
+ (gchar *) "HangupMultiparty",
+ NULL,
+ NULL,
+ NULL
+ },
+ "handle-hangup-multiparty",
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_method_info_send_tones_IN_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_manager_method_info_send_tones_IN_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_manager_method_info_send_tones_IN_ARG_unnamed_arg0,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_manager_method_info_send_tones =
+{
+ {
+ -1,
+ (gchar *) "SendTones",
+ (GDBusArgInfo **) &_org_ofono_voice_call_manager_method_info_send_tones_IN_ARG_pointers,
+ NULL,
+ NULL
+ },
+ "handle-send-tones",
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_method_info_get_calls_OUT_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "a(oa{sv})",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_manager_method_info_get_calls_OUT_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_manager_method_info_get_calls_OUT_ARG_unnamed_arg0,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_ofono_voice_call_manager_method_info_get_calls =
+{
+ {
+ -1,
+ (gchar *) "GetCalls",
+ NULL,
+ (GDBusArgInfo **) &_org_ofono_voice_call_manager_method_info_get_calls_OUT_ARG_pointers,
+ NULL
+ },
+ "handle-get-calls",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _org_ofono_voice_call_manager_method_info_pointers[] =
+{
+ &_org_ofono_voice_call_manager_method_info_get_properties,
+ &_org_ofono_voice_call_manager_method_info_dial,
+ &_org_ofono_voice_call_manager_method_info_transfer,
+ &_org_ofono_voice_call_manager_method_info_swap_calls,
+ &_org_ofono_voice_call_manager_method_info_release_and_answer,
+ &_org_ofono_voice_call_manager_method_info_hold_and_answer,
+ &_org_ofono_voice_call_manager_method_info_hangup_all,
+ &_org_ofono_voice_call_manager_method_info_private_chat,
+ &_org_ofono_voice_call_manager_method_info_create_multiparty,
+ &_org_ofono_voice_call_manager_method_info_hangup_multiparty,
+ &_org_ofono_voice_call_manager_method_info_send_tones,
+ &_org_ofono_voice_call_manager_method_info_get_calls,
+ NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_signal_info_property_changed_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_signal_info_property_changed_ARG_unnamed_arg1 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg1",
+ (gchar *) "v",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_manager_signal_info_property_changed_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_manager_signal_info_property_changed_ARG_unnamed_arg0,
+ &_org_ofono_voice_call_manager_signal_info_property_changed_ARG_unnamed_arg1,
+ NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_ofono_voice_call_manager_signal_info_property_changed =
+{
+ {
+ -1,
+ (gchar *) "PropertyChanged",
+ (GDBusArgInfo **) &_org_ofono_voice_call_manager_signal_info_property_changed_ARG_pointers,
+ NULL
+ },
+ "property-changed"
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_signal_info_call_added_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "o",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_signal_info_call_added_ARG_unnamed_arg1 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg1",
+ (gchar *) "a{sv}",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_manager_signal_info_call_added_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_manager_signal_info_call_added_ARG_unnamed_arg0,
+ &_org_ofono_voice_call_manager_signal_info_call_added_ARG_unnamed_arg1,
+ NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_ofono_voice_call_manager_signal_info_call_added =
+{
+ {
+ -1,
+ (gchar *) "CallAdded",
+ (GDBusArgInfo **) &_org_ofono_voice_call_manager_signal_info_call_added_ARG_pointers,
+ NULL
+ },
+ "call-added"
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_signal_info_call_removed_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "o",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_manager_signal_info_call_removed_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_manager_signal_info_call_removed_ARG_unnamed_arg0,
+ NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_ofono_voice_call_manager_signal_info_call_removed =
+{
+ {
+ -1,
+ (gchar *) "CallRemoved",
+ (GDBusArgInfo **) &_org_ofono_voice_call_manager_signal_info_call_removed_ARG_pointers,
+ NULL
+ },
+ "call-removed"
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_signal_info_barring_active_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_manager_signal_info_barring_active_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_manager_signal_info_barring_active_ARG_unnamed_arg0,
+ NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_ofono_voice_call_manager_signal_info_barring_active =
+{
+ {
+ -1,
+ (gchar *) "BarringActive",
+ (GDBusArgInfo **) &_org_ofono_voice_call_manager_signal_info_barring_active_ARG_pointers,
+ NULL
+ },
+ "barring-active"
+};
+
+static const _ExtendedGDBusArgInfo _org_ofono_voice_call_manager_signal_info_forwarded_ARG_unnamed_arg0 =
+{
+ {
+ -1,
+ (gchar *) "unnamed_arg0",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_ofono_voice_call_manager_signal_info_forwarded_ARG_pointers[] =
+{
+ &_org_ofono_voice_call_manager_signal_info_forwarded_ARG_unnamed_arg0,
+ NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_ofono_voice_call_manager_signal_info_forwarded =
+{
+ {
+ -1,
+ (gchar *) "Forwarded",
+ (GDBusArgInfo **) &_org_ofono_voice_call_manager_signal_info_forwarded_ARG_pointers,
+ NULL
+ },
+ "forwarded"
+};
+
+static const _ExtendedGDBusSignalInfo * const _org_ofono_voice_call_manager_signal_info_pointers[] =
+{
+ &_org_ofono_voice_call_manager_signal_info_property_changed,
+ &_org_ofono_voice_call_manager_signal_info_call_added,
+ &_org_ofono_voice_call_manager_signal_info_call_removed,
+ &_org_ofono_voice_call_manager_signal_info_barring_active,
+ &_org_ofono_voice_call_manager_signal_info_forwarded,
+ NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _org_ofono_voice_call_manager_interface_info =
+{
+ {
+ -1,
+ (gchar *) "org.ofono.VoiceCallManager",
+ (GDBusMethodInfo **) &_org_ofono_voice_call_manager_method_info_pointers,
+ (GDBusSignalInfo **) &_org_ofono_voice_call_manager_signal_info_pointers,
+ NULL,
+ NULL
+ },
+ "org-ofono-voice-call-manager",
+};
+
+
+/**
+ * org_ofono_voice_call_manager_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+org_ofono_voice_call_manager_interface_info (void)
+{
+ return (GDBusInterfaceInfo *) &_org_ofono_voice_call_manager_interface_info.parent_struct;
+}
+
+/**
+ * org_ofono_voice_call_manager_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OrgOfonoVoiceCallManager interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+org_ofono_voice_call_manager_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+ return property_id_begin - 1;
+}
+
+
+
+/**
+ * OrgOfonoVoiceCallManager:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link>.
+ */
+
+/**
+ * OrgOfonoVoiceCallManagerIface:
+ * @parent_iface: The parent interface.
+ * @handle_create_multiparty: Handler for the #OrgOfonoVoiceCallManager::handle-create-multiparty signal.
+ * @handle_dial: Handler for the #OrgOfonoVoiceCallManager::handle-dial signal.
+ * @handle_get_calls: Handler for the #OrgOfonoVoiceCallManager::handle-get-calls signal.
+ * @handle_get_properties: Handler for the #OrgOfonoVoiceCallManager::handle-get-properties signal.
+ * @handle_hangup_all: Handler for the #OrgOfonoVoiceCallManager::handle-hangup-all signal.
+ * @handle_hangup_multiparty: Handler for the #OrgOfonoVoiceCallManager::handle-hangup-multiparty signal.
+ * @handle_hold_and_answer: Handler for the #OrgOfonoVoiceCallManager::handle-hold-and-answer signal.
+ * @handle_private_chat: Handler for the #OrgOfonoVoiceCallManager::handle-private-chat signal.
+ * @handle_release_and_answer: Handler for the #OrgOfonoVoiceCallManager::handle-release-and-answer signal.
+ * @handle_send_tones: Handler for the #OrgOfonoVoiceCallManager::handle-send-tones signal.
+ * @handle_swap_calls: Handler for the #OrgOfonoVoiceCallManager::handle-swap-calls signal.
+ * @handle_transfer: Handler for the #OrgOfonoVoiceCallManager::handle-transfer signal.
+ * @barring_active: Handler for the #OrgOfonoVoiceCallManager::barring-active signal.
+ * @call_added: Handler for the #OrgOfonoVoiceCallManager::call-added signal.
+ * @call_removed: Handler for the #OrgOfonoVoiceCallManager::call-removed signal.
+ * @forwarded: Handler for the #OrgOfonoVoiceCallManager::forwarded signal.
+ * @property_changed: Handler for the #OrgOfonoVoiceCallManager::property-changed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link>.
+ */
+
+typedef OrgOfonoVoiceCallManagerIface OrgOfonoVoiceCallManagerInterface;
+G_DEFINE_INTERFACE (OrgOfonoVoiceCallManager, org_ofono_voice_call_manager, G_TYPE_OBJECT);
+
+static void
+org_ofono_voice_call_manager_default_init (OrgOfonoVoiceCallManagerIface *iface)
+{
+ /* GObject signals for incoming D-Bus method calls: */
+ /**
+ * OrgOfonoVoiceCallManager::handle-get-properties:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.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_ofono_voice_call_manager_complete_get_properties() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-get-properties",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, handle_get_properties),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * OrgOfonoVoiceCallManager::handle-dial:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @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-ofono-VoiceCallManager.Dial">Dial()</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_ofono_voice_call_manager_complete_dial() 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-dial",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, handle_dial),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 3,
+ G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING);
+
+ /**
+ * OrgOfonoVoiceCallManager::handle-transfer:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.Transfer">Transfer()</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_ofono_voice_call_manager_complete_transfer() 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-transfer",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, handle_transfer),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * OrgOfonoVoiceCallManager::handle-swap-calls:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.SwapCalls">SwapCalls()</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_ofono_voice_call_manager_complete_swap_calls() 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-swap-calls",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, handle_swap_calls),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * OrgOfonoVoiceCallManager::handle-release-and-answer:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.ReleaseAndAnswer">ReleaseAndAnswer()</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_ofono_voice_call_manager_complete_release_and_answer() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-release-and-answer",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, handle_release_and_answer),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * OrgOfonoVoiceCallManager::handle-hold-and-answer:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HoldAndAnswer">HoldAndAnswer()</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_ofono_voice_call_manager_complete_hold_and_answer() 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-hold-and-answer",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, handle_hold_and_answer),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * OrgOfonoVoiceCallManager::handle-hangup-all:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupAll">HangupAll()</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_ofono_voice_call_manager_complete_hangup_all() 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-hangup-all",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, handle_hangup_all),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * OrgOfonoVoiceCallManager::handle-private-chat:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @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-ofono-VoiceCallManager.PrivateChat">PrivateChat()</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_ofono_voice_call_manager_complete_private_chat() 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-private-chat",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, handle_private_chat),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+ /**
+ * OrgOfonoVoiceCallManager::handle-create-multiparty:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.CreateMultiparty">CreateMultiparty()</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_ofono_voice_call_manager_complete_create_multiparty() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-create-multiparty",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, handle_create_multiparty),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * OrgOfonoVoiceCallManager::handle-hangup-multiparty:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupMultiparty">HangupMultiparty()</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_ofono_voice_call_manager_complete_hangup_multiparty() 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-hangup-multiparty",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, handle_hangup_multiparty),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * OrgOfonoVoiceCallManager::handle-send-tones:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @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-ofono-VoiceCallManager.SendTones">SendTones()</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_ofono_voice_call_manager_complete_send_tones() 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-send-tones",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, handle_send_tones),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+ /**
+ * OrgOfonoVoiceCallManager::handle-get-calls:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-ofono-VoiceCallManager.GetCalls">GetCalls()</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_ofono_voice_call_manager_complete_get_calls() 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-calls",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, handle_get_calls),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /* GObject signals for received D-Bus signals: */
+ /**
+ * OrgOfonoVoiceCallManager::property-changed:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @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-ofono-VoiceCallManager.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 (OrgOfonoVoiceCallManagerIface, property_changed),
+ NULL,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+ /**
+ * OrgOfonoVoiceCallManager::call-added:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @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-ofono-VoiceCallManager.CallAdded">"CallAdded"</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 ("call-added",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, call_added),
+ NULL,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 2, G_TYPE_STRING, G_TYPE_VARIANT);
+
+ /**
+ * OrgOfonoVoiceCallManager::call-removed:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @arg_unnamed_arg0: Argument.
+ *
+ * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-VoiceCallManager.CallRemoved">"CallRemoved"</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 ("call-removed",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, call_removed),
+ NULL,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 1, G_TYPE_STRING);
+
+ /**
+ * OrgOfonoVoiceCallManager::barring-active:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @arg_unnamed_arg0: Argument.
+ *
+ * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-VoiceCallManager.BarringActive">"BarringActive"</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 ("barring-active",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, barring_active),
+ NULL,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 1, G_TYPE_STRING);
+
+ /**
+ * OrgOfonoVoiceCallManager::forwarded:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @arg_unnamed_arg0: Argument.
+ *
+ * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-ofono-VoiceCallManager.Forwarded">"Forwarded"</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 ("forwarded",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgOfonoVoiceCallManagerIface, forwarded),
+ NULL,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 1, G_TYPE_STRING);
+
+}
+
+/**
+ * org_ofono_voice_call_manager_emit_property_changed:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @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-ofono-VoiceCallManager.PropertyChanged">"PropertyChanged"</link> D-Bus signal.
+ */
+void
+org_ofono_voice_call_manager_emit_property_changed (
+ OrgOfonoVoiceCallManager *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_ofono_voice_call_manager_emit_call_added:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @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-ofono-VoiceCallManager.CallAdded">"CallAdded"</link> D-Bus signal.
+ */
+void
+org_ofono_voice_call_manager_emit_call_added (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1)
+{
+ g_signal_emit_by_name (object, "call-added", arg_unnamed_arg0, arg_unnamed_arg1);
+}
+
+/**
+ * org_ofono_voice_call_manager_emit_call_removed:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-VoiceCallManager.CallRemoved">"CallRemoved"</link> D-Bus signal.
+ */
+void
+org_ofono_voice_call_manager_emit_call_removed (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0)
+{
+ g_signal_emit_by_name (object, "call-removed", arg_unnamed_arg0);
+}
+
+/**
+ * org_ofono_voice_call_manager_emit_barring_active:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-VoiceCallManager.BarringActive">"BarringActive"</link> D-Bus signal.
+ */
+void
+org_ofono_voice_call_manager_emit_barring_active (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0)
+{
+ g_signal_emit_by_name (object, "barring-active", arg_unnamed_arg0);
+}
+
+/**
+ * org_ofono_voice_call_manager_emit_forwarded:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @arg_unnamed_arg0: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-ofono-VoiceCallManager.Forwarded">"Forwarded"</link> D-Bus signal.
+ */
+void
+org_ofono_voice_call_manager_emit_forwarded (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0)
+{
+ g_signal_emit_by_name (object, "forwarded", arg_unnamed_arg0);
+}
+
+/**
+ * org_ofono_voice_call_manager_call_get_properties:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.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_ofono_voice_call_manager_call_get_properties_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_call_get_properties_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_manager_call_get_properties (
+ OrgOfonoVoiceCallManager *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_ofono_voice_call_manager_call_get_properties_finish:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_call_get_properties().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_call_get_properties().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_get_properties_finish (
+ OrgOfonoVoiceCallManager *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_ofono_voice_call_manager_call_get_properties_sync:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.GetProperties">GetProperties()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_call_get_properties() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_get_properties_sync (
+ OrgOfonoVoiceCallManager *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_ofono_voice_call_manager_call_dial:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.Dial">Dial()</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_ofono_voice_call_manager_call_dial_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_call_dial_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_manager_call_dial (
+ OrgOfonoVoiceCallManager *proxy,
+ const gchar *arg_unnamed_arg0,
+ const gchar *arg_unnamed_arg1,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "Dial",
+ g_variant_new ("(ss)",
+ arg_unnamed_arg0,
+ arg_unnamed_arg1),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_manager_call_dial_finish:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @out_unnamed_arg2: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_call_dial().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_call_dial().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_dial_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ gchar **out_unnamed_arg2,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(o)",
+ out_unnamed_arg2);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_ofono_voice_call_manager_call_dial_sync:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @arg_unnamed_arg1: Argument to pass with the method invocation.
+ * @out_unnamed_arg2: (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-ofono-VoiceCallManager.Dial">Dial()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_call_dial() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_dial_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ const gchar *arg_unnamed_arg0,
+ const gchar *arg_unnamed_arg1,
+ gchar **out_unnamed_arg2,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "Dial",
+ g_variant_new ("(ss)",
+ arg_unnamed_arg0,
+ arg_unnamed_arg1),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(o)",
+ out_unnamed_arg2);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_ofono_voice_call_manager_call_transfer:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.Transfer">Transfer()</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_ofono_voice_call_manager_call_transfer_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_call_transfer_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_manager_call_transfer (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "Transfer",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_manager_call_transfer_finish:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_call_transfer().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_call_transfer().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_transfer_finish (
+ OrgOfonoVoiceCallManager *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_ofono_voice_call_manager_call_transfer_sync:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.Transfer">Transfer()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_call_transfer() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_transfer_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "Transfer",
+ 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_ofono_voice_call_manager_call_swap_calls:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.SwapCalls">SwapCalls()</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_ofono_voice_call_manager_call_swap_calls_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_call_swap_calls_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_manager_call_swap_calls (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "SwapCalls",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_manager_call_swap_calls_finish:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_call_swap_calls().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_call_swap_calls().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_swap_calls_finish (
+ OrgOfonoVoiceCallManager *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_ofono_voice_call_manager_call_swap_calls_sync:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.SwapCalls">SwapCalls()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_call_swap_calls() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_swap_calls_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "SwapCalls",
+ 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_ofono_voice_call_manager_call_release_and_answer:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.ReleaseAndAnswer">ReleaseAndAnswer()</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_ofono_voice_call_manager_call_release_and_answer_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_call_release_and_answer_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_manager_call_release_and_answer (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "ReleaseAndAnswer",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_manager_call_release_and_answer_finish:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_call_release_and_answer().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_call_release_and_answer().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_release_and_answer_finish (
+ OrgOfonoVoiceCallManager *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_ofono_voice_call_manager_call_release_and_answer_sync:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.ReleaseAndAnswer">ReleaseAndAnswer()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_call_release_and_answer() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_release_and_answer_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "ReleaseAndAnswer",
+ 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_ofono_voice_call_manager_call_hold_and_answer:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.HoldAndAnswer">HoldAndAnswer()</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_ofono_voice_call_manager_call_hold_and_answer_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_call_hold_and_answer_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_manager_call_hold_and_answer (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "HoldAndAnswer",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_manager_call_hold_and_answer_finish:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_call_hold_and_answer().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_call_hold_and_answer().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_hold_and_answer_finish (
+ OrgOfonoVoiceCallManager *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_ofono_voice_call_manager_call_hold_and_answer_sync:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HoldAndAnswer">HoldAndAnswer()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_call_hold_and_answer() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_hold_and_answer_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "HoldAndAnswer",
+ 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_ofono_voice_call_manager_call_hangup_all:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.HangupAll">HangupAll()</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_ofono_voice_call_manager_call_hangup_all_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_call_hangup_all_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_manager_call_hangup_all (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "HangupAll",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_manager_call_hangup_all_finish:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_call_hangup_all().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_call_hangup_all().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_hangup_all_finish (
+ OrgOfonoVoiceCallManager *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_ofono_voice_call_manager_call_hangup_all_sync:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupAll">HangupAll()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_call_hangup_all() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_hangup_all_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "HangupAll",
+ 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_ofono_voice_call_manager_call_private_chat:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.PrivateChat">PrivateChat()</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_ofono_voice_call_manager_call_private_chat_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_call_private_chat_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_manager_call_private_chat (
+ OrgOfonoVoiceCallManager *proxy,
+ const gchar *arg_unnamed_arg0,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "PrivateChat",
+ g_variant_new ("(o)",
+ arg_unnamed_arg0),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_manager_call_private_chat_finish:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @out_unnamed_arg1: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_call_private_chat().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_call_private_chat().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_private_chat_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ gchar ***out_unnamed_arg1,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(^ao)",
+ out_unnamed_arg1);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_ofono_voice_call_manager_call_private_chat_sync:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @arg_unnamed_arg0: Argument to pass with the method invocation.
+ * @out_unnamed_arg1: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.PrivateChat">PrivateChat()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_call_private_chat() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_private_chat_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ const gchar *arg_unnamed_arg0,
+ gchar ***out_unnamed_arg1,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "PrivateChat",
+ g_variant_new ("(o)",
+ arg_unnamed_arg0),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(^ao)",
+ out_unnamed_arg1);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_ofono_voice_call_manager_call_create_multiparty:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.CreateMultiparty">CreateMultiparty()</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_ofono_voice_call_manager_call_create_multiparty_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_call_create_multiparty_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_manager_call_create_multiparty (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "CreateMultiparty",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_manager_call_create_multiparty_finish:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_call_create_multiparty().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_call_create_multiparty().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_create_multiparty_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ gchar ***out_unnamed_arg0,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(^ao)",
+ out_unnamed_arg0);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_ofono_voice_call_manager_call_create_multiparty_sync:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.CreateMultiparty">CreateMultiparty()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_call_create_multiparty() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_create_multiparty_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ gchar ***out_unnamed_arg0,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "CreateMultiparty",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(^ao)",
+ out_unnamed_arg0);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_ofono_voice_call_manager_call_hangup_multiparty:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.HangupMultiparty">HangupMultiparty()</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_ofono_voice_call_manager_call_hangup_multiparty_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_call_hangup_multiparty_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_manager_call_hangup_multiparty (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "HangupMultiparty",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_manager_call_hangup_multiparty_finish:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_call_hangup_multiparty().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_call_hangup_multiparty().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_hangup_multiparty_finish (
+ OrgOfonoVoiceCallManager *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_ofono_voice_call_manager_call_hangup_multiparty_sync:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupMultiparty">HangupMultiparty()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_call_hangup_multiparty() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_hangup_multiparty_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "HangupMultiparty",
+ 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_ofono_voice_call_manager_call_send_tones:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.SendTones">SendTones()</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_ofono_voice_call_manager_call_send_tones_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_call_send_tones_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_manager_call_send_tones (
+ OrgOfonoVoiceCallManager *proxy,
+ const gchar *arg_unnamed_arg0,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "SendTones",
+ g_variant_new ("(s)",
+ arg_unnamed_arg0),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_manager_call_send_tones_finish:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_call_send_tones().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_call_send_tones().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_send_tones_finish (
+ OrgOfonoVoiceCallManager *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_ofono_voice_call_manager_call_send_tones_sync:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.SendTones">SendTones()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_call_send_tones() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_send_tones_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ const gchar *arg_unnamed_arg0,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "SendTones",
+ g_variant_new ("(s)",
+ arg_unnamed_arg0),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_ofono_voice_call_manager_call_get_calls:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.GetCalls">GetCalls()</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_ofono_voice_call_manager_call_get_calls_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_call_get_calls_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_ofono_voice_call_manager_call_get_calls (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "GetCalls",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_ofono_voice_call_manager_call_get_calls_finish:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @out_unnamed_arg0: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_call_get_calls().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_call_get_calls().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_get_calls_finish (
+ OrgOfonoVoiceCallManager *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(oa{sv}))",
+ out_unnamed_arg0);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_ofono_voice_call_manager_call_get_calls_sync:
+ * @proxy: A #OrgOfonoVoiceCallManagerProxy.
+ * @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-ofono-VoiceCallManager.GetCalls">GetCalls()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_call_get_calls() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_ofono_voice_call_manager_call_get_calls_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GVariant **out_unnamed_arg0,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "GetCalls",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(@a(oa{sv}))",
+ out_unnamed_arg0);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_ofono_voice_call_manager_complete_get_properties:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @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-ofono-VoiceCallManager.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_ofono_voice_call_manager_complete_get_properties (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *unnamed_arg0)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("(@a{sv})",
+ unnamed_arg0));
+}
+
+/**
+ * org_ofono_voice_call_manager_complete_dial:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @unnamed_arg2: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.Dial">Dial()</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_ofono_voice_call_manager_complete_dial (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *unnamed_arg2)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("(o)",
+ unnamed_arg2));
+}
+
+/**
+ * org_ofono_voice_call_manager_complete_transfer:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.Transfer">Transfer()</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_ofono_voice_call_manager_complete_transfer (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * org_ofono_voice_call_manager_complete_swap_calls:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.SwapCalls">SwapCalls()</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_ofono_voice_call_manager_complete_swap_calls (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * org_ofono_voice_call_manager_complete_release_and_answer:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.ReleaseAndAnswer">ReleaseAndAnswer()</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_ofono_voice_call_manager_complete_release_and_answer (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * org_ofono_voice_call_manager_complete_hold_and_answer:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HoldAndAnswer">HoldAndAnswer()</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_ofono_voice_call_manager_complete_hold_and_answer (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * org_ofono_voice_call_manager_complete_hangup_all:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupAll">HangupAll()</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_ofono_voice_call_manager_complete_hangup_all (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * org_ofono_voice_call_manager_complete_private_chat:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @unnamed_arg1: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.PrivateChat">PrivateChat()</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_ofono_voice_call_manager_complete_private_chat (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *const *unnamed_arg1)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("(^ao)",
+ unnamed_arg1));
+}
+
+/**
+ * org_ofono_voice_call_manager_complete_create_multiparty:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @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-ofono-VoiceCallManager.CreateMultiparty">CreateMultiparty()</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_ofono_voice_call_manager_complete_create_multiparty (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *const *unnamed_arg0)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("(^ao)",
+ unnamed_arg0));
+}
+
+/**
+ * org_ofono_voice_call_manager_complete_hangup_multiparty:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.HangupMultiparty">HangupMultiparty()</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_ofono_voice_call_manager_complete_hangup_multiparty (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * org_ofono_voice_call_manager_complete_send_tones:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-ofono-VoiceCallManager.SendTones">SendTones()</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_ofono_voice_call_manager_complete_send_tones (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * org_ofono_voice_call_manager_complete_get_calls:
+ * @object: A #OrgOfonoVoiceCallManager.
+ * @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-ofono-VoiceCallManager.GetCalls">GetCalls()</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_ofono_voice_call_manager_complete_get_calls (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *unnamed_arg0)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("(@a(oa{sv}))",
+ unnamed_arg0));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgOfonoVoiceCallManagerProxy:
+ *
+ * The #OrgOfonoVoiceCallManagerProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgOfonoVoiceCallManagerProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgOfonoVoiceCallManagerProxy.
+ */
+
+struct _OrgOfonoVoiceCallManagerProxyPrivate
+{
+ GData *qdata;
+};
+
+static void org_ofono_voice_call_manager_proxy_iface_init (OrgOfonoVoiceCallManagerIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OrgOfonoVoiceCallManagerProxy, org_ofono_voice_call_manager_proxy, G_TYPE_DBUS_PROXY,
+ G_ADD_PRIVATE (OrgOfonoVoiceCallManagerProxy)
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_OFONO_VOICE_CALL_MANAGER, org_ofono_voice_call_manager_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OrgOfonoVoiceCallManagerProxy, org_ofono_voice_call_manager_proxy, G_TYPE_DBUS_PROXY,
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_OFONO_VOICE_CALL_MANAGER, org_ofono_voice_call_manager_proxy_iface_init));
+
+#endif
+static void
+org_ofono_voice_call_manager_proxy_finalize (GObject *object)
+{
+ OrgOfonoVoiceCallManagerProxy *proxy = ORG_OFONO_VOICE_CALL_MANAGER_PROXY (object);
+ g_datalist_clear (&proxy->priv->qdata);
+ G_OBJECT_CLASS (org_ofono_voice_call_manager_proxy_parent_class)->finalize (object);
+}
+
+static void
+org_ofono_voice_call_manager_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+org_ofono_voice_call_manager_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+org_ofono_voice_call_manager_proxy_g_signal (GDBusProxy *proxy,
+ const gchar *sender_name G_GNUC_UNUSED,
+ 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_ofono_voice_call_manager_interface_info.parent_struct, signal_name);
+ if (info == NULL)
+ return;
+ num_params = g_variant_n_children (parameters);
+ paramv = g_new0 (GValue, num_params + 1);
+ g_value_init (&paramv[0], TYPE_ORG_OFONO_VOICE_CALL_MANAGER);
+ g_value_set_object (&paramv[0], proxy);
+ g_variant_iter_init (&iter, parameters);
+ n = 1;
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_OFONO_VOICE_CALL_MANAGER);
+ g_signal_emitv (paramv, signal_id, 0, NULL);
+ for (n = 0; n < num_params + 1; n++)
+ g_value_unset (&paramv[n]);
+ g_free (paramv);
+}
+
+static void
+org_ofono_voice_call_manager_proxy_g_properties_changed (GDBusProxy *_proxy,
+ GVariant *changed_properties,
+ const gchar *const *invalidated_properties)
+{
+ OrgOfonoVoiceCallManagerProxy *proxy = ORG_OFONO_VOICE_CALL_MANAGER_PROXY (_proxy);
+ guint n;
+ const gchar *key;
+ GVariantIter *iter;
+ _ExtendedGDBusPropertyInfo *info;
+ g_variant_get (changed_properties, "a{sv}", &iter);
+ while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+ {
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_ofono_voice_call_manager_interface_info.parent_struct, 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_ofono_voice_call_manager_interface_info.parent_struct, 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_ofono_voice_call_manager_proxy_init (OrgOfonoVoiceCallManagerProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ proxy->priv = org_ofono_voice_call_manager_proxy_get_instance_private (proxy);
+#else
+ proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, OrgOfonoVoiceCallManagerProxyPrivate);
+#endif
+
+ g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_ofono_voice_call_manager_interface_info ());
+}
+
+static void
+org_ofono_voice_call_manager_proxy_class_init (OrgOfonoVoiceCallManagerProxyClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusProxyClass *proxy_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = org_ofono_voice_call_manager_proxy_finalize;
+ gobject_class->get_property = org_ofono_voice_call_manager_proxy_get_property;
+ gobject_class->set_property = org_ofono_voice_call_manager_proxy_set_property;
+
+ proxy_class = G_DBUS_PROXY_CLASS (klass);
+ proxy_class->g_signal = org_ofono_voice_call_manager_proxy_g_signal;
+ proxy_class->g_properties_changed = org_ofono_voice_call_manager_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (OrgOfonoVoiceCallManagerProxyPrivate));
+#endif
+}
+
+static void
+org_ofono_voice_call_manager_proxy_iface_init (OrgOfonoVoiceCallManagerIface *iface)
+{
+}
+
+/**
+ * org_ofono_voice_call_manager_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</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_ofono_voice_call_manager_proxy_new_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_ofono_voice_call_manager_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.VoiceCallManager", NULL);
+}
+
+/**
+ * org_ofono_voice_call_manager_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_proxy_new().
+ *
+ * Returns: (transfer full) (type OrgOfonoVoiceCallManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgOfonoVoiceCallManager *
+org_ofono_voice_call_manager_proxy_new_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return ORG_OFONO_VOICE_CALL_MANAGER (ret);
+ else
+ return NULL;
+}
+
+/**
+ * org_ofono_voice_call_manager_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgOfonoVoiceCallManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgOfonoVoiceCallManager *
+org_ofono_voice_call_manager_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.ofono.VoiceCallManager", NULL);
+ if (ret != NULL)
+ return ORG_OFONO_VOICE_CALL_MANAGER (ret);
+ else
+ return NULL;
+}
+
+
+/**
+ * org_ofono_voice_call_manager_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like org_ofono_voice_call_manager_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_ofono_voice_call_manager_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See org_ofono_voice_call_manager_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_ofono_voice_call_manager_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.VoiceCallManager", NULL);
+}
+
+/**
+ * org_ofono_voice_call_manager_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_ofono_voice_call_manager_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_ofono_voice_call_manager_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OrgOfonoVoiceCallManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgOfonoVoiceCallManager *
+org_ofono_voice_call_manager_proxy_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return ORG_OFONO_VOICE_CALL_MANAGER (ret);
+ else
+ return NULL;
+}
+
+/**
+ * org_ofono_voice_call_manager_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like org_ofono_voice_call_manager_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_ofono_voice_call_manager_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgOfonoVoiceCallManagerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgOfonoVoiceCallManager *
+org_ofono_voice_call_manager_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.ofono.VoiceCallManager", NULL);
+ if (ret != NULL)
+ return ORG_OFONO_VOICE_CALL_MANAGER (ret);
+ else
+ return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgOfonoVoiceCallManagerSkeleton:
+ *
+ * The #OrgOfonoVoiceCallManagerSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgOfonoVoiceCallManagerSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgOfonoVoiceCallManagerSkeleton.
+ */
+
+struct _OrgOfonoVoiceCallManagerSkeletonPrivate
+{
+ GValue *properties;
+ GList *changed_properties;
+ GSource *changed_properties_idle_source;
+ GMainContext *context;
+ GMutex lock;
+};
+
+static void
+_org_ofono_voice_call_manager_skeleton_handle_method_call (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ OrgOfonoVoiceCallManagerSkeleton *skeleton = ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (user_data);
+ _ExtendedGDBusMethodInfo *info;
+ GVariantIter iter;
+ GVariant *child;
+ GValue *paramv;
+ guint num_params;
+ guint num_extra;
+ guint n;
+ guint signal_id;
+ GValue return_value = G_VALUE_INIT;
+ info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+ g_assert (info != NULL);
+ num_params = g_variant_n_children (parameters);
+ num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra);
+ n = 0;
+ g_value_init (&paramv[n], TYPE_ORG_OFONO_VOICE_CALL_MANAGER);
+ g_value_set_object (&paramv[n++], skeleton);
+ g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+ g_value_set_object (&paramv[n++], invocation);
+ if (info->pass_fdlist)
+ {
+#ifdef G_OS_UNIX
+ g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+ g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+ g_assert_not_reached ();
+#endif
+ }
+ g_variant_iter_init (&iter, parameters);
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_OFONO_VOICE_CALL_MANAGER);
+ g_value_init (&return_value, G_TYPE_BOOLEAN);
+ g_signal_emitv (paramv, signal_id, 0, &return_value);
+ if (!g_value_get_boolean (&return_value))
+ g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+ g_value_unset (&return_value);
+ for (n = 0; n < num_params + num_extra; n++)
+ g_value_unset (&paramv[n]);
+ g_free (paramv);
+}
+
+static GVariant *
+_org_ofono_voice_call_manager_skeleton_handle_get_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GError **error,
+ gpointer user_data)
+{
+ OrgOfonoVoiceCallManagerSkeleton *skeleton = ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ GVariant *ret;
+ ret = NULL;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_ofono_voice_call_manager_interface_info.parent_struct, 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_ofono_voice_call_manager_skeleton_handle_set_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GVariant *variant,
+ GError **error,
+ gpointer user_data)
+{
+ OrgOfonoVoiceCallManagerSkeleton *skeleton = ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ gboolean ret;
+ ret = FALSE;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_ofono_voice_call_manager_interface_info.parent_struct, 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_ofono_voice_call_manager_skeleton_vtable =
+{
+ _org_ofono_voice_call_manager_skeleton_handle_method_call,
+ _org_ofono_voice_call_manager_skeleton_handle_get_property,
+ _org_ofono_voice_call_manager_skeleton_handle_set_property,
+ {NULL}
+};
+
+static GDBusInterfaceInfo *
+org_ofono_voice_call_manager_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return org_ofono_voice_call_manager_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+org_ofono_voice_call_manager_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return (GDBusInterfaceVTable *) &_org_ofono_voice_call_manager_skeleton_vtable;
+}
+
+static GVariant *
+org_ofono_voice_call_manager_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+ OrgOfonoVoiceCallManagerSkeleton *skeleton = ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (_skeleton);
+
+ GVariantBuilder builder;
+ guint n;
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+ if (_org_ofono_voice_call_manager_interface_info.parent_struct.properties == NULL)
+ goto out;
+ for (n = 0; _org_ofono_voice_call_manager_interface_info.parent_struct.properties[n] != NULL; n++)
+ {
+ GDBusPropertyInfo *info = _org_ofono_voice_call_manager_interface_info.parent_struct.properties[n];
+ if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+ {
+ GVariant *value;
+ value = _org_ofono_voice_call_manager_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCallManager", 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_ofono_voice_call_manager_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_org_ofono_voice_call_manager_on_signal_property_changed (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1)
+{
+ OrgOfonoVoiceCallManagerSkeleton *skeleton = ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (object);
+
+ GList *connections, *l;
+ GVariant *signal_variant;
+ connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+ signal_variant = g_variant_ref_sink (g_variant_new ("(s@v)",
+ arg_unnamed_arg0,
+ arg_unnamed_arg1));
+ for (l = connections; l != NULL; l = l->next)
+ {
+ GDBusConnection *connection = l->data;
+ g_dbus_connection_emit_signal (connection,
+ NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCallManager", "PropertyChanged",
+ signal_variant, NULL);
+ }
+ g_variant_unref (signal_variant);
+ g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_org_ofono_voice_call_manager_on_signal_call_added (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1)
+{
+ OrgOfonoVoiceCallManagerSkeleton *skeleton = ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (object);
+
+ GList *connections, *l;
+ GVariant *signal_variant;
+ connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+ signal_variant = g_variant_ref_sink (g_variant_new ("(o@a{sv})",
+ arg_unnamed_arg0,
+ arg_unnamed_arg1));
+ for (l = connections; l != NULL; l = l->next)
+ {
+ GDBusConnection *connection = l->data;
+ g_dbus_connection_emit_signal (connection,
+ NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCallManager", "CallAdded",
+ signal_variant, NULL);
+ }
+ g_variant_unref (signal_variant);
+ g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_org_ofono_voice_call_manager_on_signal_call_removed (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0)
+{
+ OrgOfonoVoiceCallManagerSkeleton *skeleton = ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (object);
+
+ GList *connections, *l;
+ GVariant *signal_variant;
+ connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+ signal_variant = g_variant_ref_sink (g_variant_new ("(o)",
+ arg_unnamed_arg0));
+ for (l = connections; l != NULL; l = l->next)
+ {
+ GDBusConnection *connection = l->data;
+ g_dbus_connection_emit_signal (connection,
+ NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCallManager", "CallRemoved",
+ signal_variant, NULL);
+ }
+ g_variant_unref (signal_variant);
+ g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_org_ofono_voice_call_manager_on_signal_barring_active (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0)
+{
+ OrgOfonoVoiceCallManagerSkeleton *skeleton = ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (object);
+
+ GList *connections, *l;
+ GVariant *signal_variant;
+ connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+ signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
+ arg_unnamed_arg0));
+ for (l = connections; l != NULL; l = l->next)
+ {
+ GDBusConnection *connection = l->data;
+ g_dbus_connection_emit_signal (connection,
+ NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCallManager", "BarringActive",
+ signal_variant, NULL);
+ }
+ g_variant_unref (signal_variant);
+ g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_org_ofono_voice_call_manager_on_signal_forwarded (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0)
+{
+ OrgOfonoVoiceCallManagerSkeleton *skeleton = ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (object);
+
+ GList *connections, *l;
+ GVariant *signal_variant;
+ connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+ signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
+ arg_unnamed_arg0));
+ for (l = connections; l != NULL; l = l->next)
+ {
+ GDBusConnection *connection = l->data;
+ g_dbus_connection_emit_signal (connection,
+ NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.ofono.VoiceCallManager", "Forwarded",
+ signal_variant, NULL);
+ }
+ g_variant_unref (signal_variant);
+ g_list_free_full (connections, g_object_unref);
+}
+
+static void org_ofono_voice_call_manager_skeleton_iface_init (OrgOfonoVoiceCallManagerIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OrgOfonoVoiceCallManagerSkeleton, org_ofono_voice_call_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_ADD_PRIVATE (OrgOfonoVoiceCallManagerSkeleton)
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_OFONO_VOICE_CALL_MANAGER, org_ofono_voice_call_manager_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OrgOfonoVoiceCallManagerSkeleton, org_ofono_voice_call_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_OFONO_VOICE_CALL_MANAGER, org_ofono_voice_call_manager_skeleton_iface_init));
+
+#endif
+static void
+org_ofono_voice_call_manager_skeleton_finalize (GObject *object)
+{
+ OrgOfonoVoiceCallManagerSkeleton *skeleton = ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (object);
+ g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+ if (skeleton->priv->changed_properties_idle_source != NULL)
+ g_source_destroy (skeleton->priv->changed_properties_idle_source);
+ g_main_context_unref (skeleton->priv->context);
+ g_mutex_clear (&skeleton->priv->lock);
+ G_OBJECT_CLASS (org_ofono_voice_call_manager_skeleton_parent_class)->finalize (object);
+}
+
+static void
+org_ofono_voice_call_manager_skeleton_init (OrgOfonoVoiceCallManagerSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ skeleton->priv = org_ofono_voice_call_manager_skeleton_get_instance_private (skeleton);
+#else
+ skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON, OrgOfonoVoiceCallManagerSkeletonPrivate);
+#endif
+
+ g_mutex_init (&skeleton->priv->lock);
+ skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+org_ofono_voice_call_manager_skeleton_class_init (OrgOfonoVoiceCallManagerSkeletonClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusInterfaceSkeletonClass *skeleton_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = org_ofono_voice_call_manager_skeleton_finalize;
+
+ skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+ skeleton_class->get_info = org_ofono_voice_call_manager_skeleton_dbus_interface_get_info;
+ skeleton_class->get_properties = org_ofono_voice_call_manager_skeleton_dbus_interface_get_properties;
+ skeleton_class->flush = org_ofono_voice_call_manager_skeleton_dbus_interface_flush;
+ skeleton_class->get_vtable = org_ofono_voice_call_manager_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (OrgOfonoVoiceCallManagerSkeletonPrivate));
+#endif
+}
+
+static void
+org_ofono_voice_call_manager_skeleton_iface_init (OrgOfonoVoiceCallManagerIface *iface)
+{
+ iface->property_changed = _org_ofono_voice_call_manager_on_signal_property_changed;
+ iface->call_added = _org_ofono_voice_call_manager_on_signal_call_added;
+ iface->call_removed = _org_ofono_voice_call_manager_on_signal_call_removed;
+ iface->barring_active = _org_ofono_voice_call_manager_on_signal_barring_active;
+ iface->forwarded = _org_ofono_voice_call_manager_on_signal_forwarded;
+}
+
+/**
+ * org_ofono_voice_call_manager_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-ofono-VoiceCallManager.top_of_page">org.ofono.VoiceCallManager</link>.
+ *
+ * Returns: (transfer full) (type OrgOfonoVoiceCallManagerSkeleton): The skeleton object.
+ */
+OrgOfonoVoiceCallManager *
+org_ofono_voice_call_manager_skeleton_new (void)
+{
+ return ORG_OFONO_VOICE_CALL_MANAGER (g_object_new (TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON, NULL));
+}
+
diff --git a/telephony-binding/gdbus/ofono_voicecallmanager_interface.h b/telephony-binding/gdbus/ofono_voicecallmanager_interface.h
new file mode 100644
index 0000000..3daa0e0
--- /dev/null
+++ b/telephony-binding/gdbus/ofono_voicecallmanager_interface.h
@@ -0,0 +1,514 @@
+/*
+ * Generated by gdbus-codegen 2.50.3. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __OFONO_VOICECALLMANAGER_INTERFACE_H__
+#define __OFONO_VOICECALLMANAGER_INTERFACE_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.ofono.VoiceCallManager */
+
+#define TYPE_ORG_OFONO_VOICE_CALL_MANAGER (org_ofono_voice_call_manager_get_type ())
+#define ORG_OFONO_VOICE_CALL_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_OFONO_VOICE_CALL_MANAGER, OrgOfonoVoiceCallManager))
+#define IS_ORG_OFONO_VOICE_CALL_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_OFONO_VOICE_CALL_MANAGER))
+#define ORG_OFONO_VOICE_CALL_MANAGER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_OFONO_VOICE_CALL_MANAGER, OrgOfonoVoiceCallManagerIface))
+
+struct _OrgOfonoVoiceCallManager;
+typedef struct _OrgOfonoVoiceCallManager OrgOfonoVoiceCallManager;
+typedef struct _OrgOfonoVoiceCallManagerIface OrgOfonoVoiceCallManagerIface;
+
+struct _OrgOfonoVoiceCallManagerIface
+{
+ GTypeInterface parent_iface;
+
+
+ gboolean (*handle_create_multiparty) (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_dial) (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *arg_unnamed_arg0,
+ const gchar *arg_unnamed_arg1);
+
+ gboolean (*handle_get_calls) (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_get_properties) (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_hangup_all) (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_hangup_multiparty) (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_hold_and_answer) (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_private_chat) (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *arg_unnamed_arg0);
+
+ gboolean (*handle_release_and_answer) (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_send_tones) (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *arg_unnamed_arg0);
+
+ gboolean (*handle_swap_calls) (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_transfer) (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+ void (*barring_active) (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0);
+
+ void (*call_added) (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1);
+
+ void (*call_removed) (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0);
+
+ void (*forwarded) (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0);
+
+ void (*property_changed) (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1);
+
+};
+
+GType org_ofono_voice_call_manager_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *org_ofono_voice_call_manager_interface_info (void);
+guint org_ofono_voice_call_manager_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void org_ofono_voice_call_manager_complete_get_properties (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *unnamed_arg0);
+
+void org_ofono_voice_call_manager_complete_dial (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *unnamed_arg2);
+
+void org_ofono_voice_call_manager_complete_transfer (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+void org_ofono_voice_call_manager_complete_swap_calls (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+void org_ofono_voice_call_manager_complete_release_and_answer (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+void org_ofono_voice_call_manager_complete_hold_and_answer (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+void org_ofono_voice_call_manager_complete_hangup_all (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+void org_ofono_voice_call_manager_complete_private_chat (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *const *unnamed_arg1);
+
+void org_ofono_voice_call_manager_complete_create_multiparty (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *const *unnamed_arg0);
+
+void org_ofono_voice_call_manager_complete_hangup_multiparty (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+void org_ofono_voice_call_manager_complete_send_tones (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation);
+
+void org_ofono_voice_call_manager_complete_get_calls (
+ OrgOfonoVoiceCallManager *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *unnamed_arg0);
+
+
+
+/* D-Bus signal emissions functions: */
+void org_ofono_voice_call_manager_emit_property_changed (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1);
+
+void org_ofono_voice_call_manager_emit_call_added (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0,
+ GVariant *arg_unnamed_arg1);
+
+void org_ofono_voice_call_manager_emit_call_removed (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0);
+
+void org_ofono_voice_call_manager_emit_barring_active (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0);
+
+void org_ofono_voice_call_manager_emit_forwarded (
+ OrgOfonoVoiceCallManager *object,
+ const gchar *arg_unnamed_arg0);
+
+
+
+/* D-Bus method calls: */
+void org_ofono_voice_call_manager_call_get_properties (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_manager_call_get_properties_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ GVariant **out_unnamed_arg0,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_manager_call_get_properties_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GVariant **out_unnamed_arg0,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_manager_call_dial (
+ OrgOfonoVoiceCallManager *proxy,
+ const gchar *arg_unnamed_arg0,
+ const gchar *arg_unnamed_arg1,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_manager_call_dial_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ gchar **out_unnamed_arg2,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_manager_call_dial_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ const gchar *arg_unnamed_arg0,
+ const gchar *arg_unnamed_arg1,
+ gchar **out_unnamed_arg2,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_manager_call_transfer (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_manager_call_transfer_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_manager_call_transfer_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_manager_call_swap_calls (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_manager_call_swap_calls_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_manager_call_swap_calls_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_manager_call_release_and_answer (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_manager_call_release_and_answer_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_manager_call_release_and_answer_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_manager_call_hold_and_answer (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_manager_call_hold_and_answer_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_manager_call_hold_and_answer_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_manager_call_hangup_all (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_manager_call_hangup_all_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_manager_call_hangup_all_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_manager_call_private_chat (
+ OrgOfonoVoiceCallManager *proxy,
+ const gchar *arg_unnamed_arg0,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_manager_call_private_chat_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ gchar ***out_unnamed_arg1,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_manager_call_private_chat_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ const gchar *arg_unnamed_arg0,
+ gchar ***out_unnamed_arg1,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_manager_call_create_multiparty (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_manager_call_create_multiparty_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ gchar ***out_unnamed_arg0,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_manager_call_create_multiparty_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ gchar ***out_unnamed_arg0,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_manager_call_hangup_multiparty (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_manager_call_hangup_multiparty_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_manager_call_hangup_multiparty_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_manager_call_send_tones (
+ OrgOfonoVoiceCallManager *proxy,
+ const gchar *arg_unnamed_arg0,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_manager_call_send_tones_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_manager_call_send_tones_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ const gchar *arg_unnamed_arg0,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_manager_call_get_calls (
+ OrgOfonoVoiceCallManager *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_ofono_voice_call_manager_call_get_calls_finish (
+ OrgOfonoVoiceCallManager *proxy,
+ GVariant **out_unnamed_arg0,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_ofono_voice_call_manager_call_get_calls_sync (
+ OrgOfonoVoiceCallManager *proxy,
+ GVariant **out_unnamed_arg0,
+ GCancellable *cancellable,
+ GError **error);
+
+
+
+/* ---- */
+
+#define TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY (org_ofono_voice_call_manager_proxy_get_type ())
+#define ORG_OFONO_VOICE_CALL_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, OrgOfonoVoiceCallManagerProxy))
+#define ORG_OFONO_VOICE_CALL_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, OrgOfonoVoiceCallManagerProxyClass))
+#define ORG_OFONO_VOICE_CALL_MANAGER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY, OrgOfonoVoiceCallManagerProxyClass))
+#define IS_ORG_OFONO_VOICE_CALL_MANAGER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY))
+#define IS_ORG_OFONO_VOICE_CALL_MANAGER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_OFONO_VOICE_CALL_MANAGER_PROXY))
+
+typedef struct _OrgOfonoVoiceCallManagerProxy OrgOfonoVoiceCallManagerProxy;
+typedef struct _OrgOfonoVoiceCallManagerProxyClass OrgOfonoVoiceCallManagerProxyClass;
+typedef struct _OrgOfonoVoiceCallManagerProxyPrivate OrgOfonoVoiceCallManagerProxyPrivate;
+
+struct _OrgOfonoVoiceCallManagerProxy
+{
+ /*< private >*/
+ GDBusProxy parent_instance;
+ OrgOfonoVoiceCallManagerProxyPrivate *priv;
+};
+
+struct _OrgOfonoVoiceCallManagerProxyClass
+{
+ GDBusProxyClass parent_class;
+};
+
+GType org_ofono_voice_call_manager_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgOfonoVoiceCallManagerProxy, g_object_unref)
+#endif
+
+void org_ofono_voice_call_manager_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+OrgOfonoVoiceCallManager *org_ofono_voice_call_manager_proxy_new_finish (
+ GAsyncResult *res,
+ GError **error);
+OrgOfonoVoiceCallManager *org_ofono_voice_call_manager_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_ofono_voice_call_manager_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+OrgOfonoVoiceCallManager *org_ofono_voice_call_manager_proxy_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error);
+OrgOfonoVoiceCallManager *org_ofono_voice_call_manager_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+
+/* ---- */
+
+#define TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON (org_ofono_voice_call_manager_skeleton_get_type ())
+#define ORG_OFONO_VOICE_CALL_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON, OrgOfonoVoiceCallManagerSkeleton))
+#define ORG_OFONO_VOICE_CALL_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON, OrgOfonoVoiceCallManagerSkeletonClass))
+#define ORG_OFONO_VOICE_CALL_MANAGER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON, OrgOfonoVoiceCallManagerSkeletonClass))
+#define IS_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON))
+#define IS_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_OFONO_VOICE_CALL_MANAGER_SKELETON))
+
+typedef struct _OrgOfonoVoiceCallManagerSkeleton OrgOfonoVoiceCallManagerSkeleton;
+typedef struct _OrgOfonoVoiceCallManagerSkeletonClass OrgOfonoVoiceCallManagerSkeletonClass;
+typedef struct _OrgOfonoVoiceCallManagerSkeletonPrivate OrgOfonoVoiceCallManagerSkeletonPrivate;
+
+struct _OrgOfonoVoiceCallManagerSkeleton
+{
+ /*< private >*/
+ GDBusInterfaceSkeleton parent_instance;
+ OrgOfonoVoiceCallManagerSkeletonPrivate *priv;
+};
+
+struct _OrgOfonoVoiceCallManagerSkeletonClass
+{
+ GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType org_ofono_voice_call_manager_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgOfonoVoiceCallManagerSkeleton, g_object_unref)
+#endif
+
+OrgOfonoVoiceCallManager *org_ofono_voice_call_manager_skeleton_new (void);
+
+
+G_END_DECLS
+
+#endif /* __OFONO_VOICECALLMANAGER_INTERFACE_H__ */
diff --git a/telephony-binding/telephony-binding.c b/telephony-binding/telephony-binding.c
new file mode 100644
index 0000000..6edecd3
--- /dev/null
+++ b/telephony-binding/telephony-binding.c
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2017 Konsulko Group
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define _GNU_SOURCE
+
+#include <glib.h>
+#include <json-c/json.h>
+#include <string.h>
+
+#include <afb/afb-binding.h>
+#include <afb/afb-service-itf.h>
+
+#include "ofono_manager.h"
+#include "ofono_voicecallmanager.h"
+#include "ofono_voicecall.h"
+
+static const struct afb_binding_interface *interface;
+
+static OrgOfonoVoiceCallManager *vcm;
+static gchar *incoming_call;
+static gchar *voice_call;
+
+static void dial(struct afb_req request)
+{
+ struct json_object *query, *val, *ret;
+ const char *number;
+
+ query = afb_req_json(request);
+ json_object_object_get_ex(query, "value", &val);
+ if (json_object_is_type(val, json_type_string)) {
+ number = json_object_get_string(val);
+ if (voice_call) {
+ ERROR(interface, "dial: cannot dial with active call");
+ afb_req_fail(request, "active call", NULL);
+ } else {
+ DEBUG(interface, "dial: %s...\n", number);
+ voice_call = ofono_voicecallmanager_dial(vcm, (gchar *)number, "");
+ DEBUG(interface, "voice_call: %s\n", voice_call);
+ if (voice_call) {
+ ret = json_object_new_object();
+ json_object_object_add(ret, "VoiceCall", json_object_new_string(voice_call));
+ afb_req_success(request, ret, NULL);
+ } else {
+ ERROR(interface, "dial: failed to dial number\n");
+ afb_req_fail(request, "failed dial", NULL);
+ }
+ }
+ } else {
+ ERROR(interface, "dial: no phone number parameter\n");
+ afb_req_fail(request, "no number", NULL);
+ }
+}
+
+static void hangup(struct afb_req request)
+{
+ if (voice_call) {
+ DEBUG(interface, "Hangup voice call: %s\n", voice_call);
+ ofono_hangup(voice_call);
+ afb_req_success(request, NULL, NULL);
+ voice_call = NULL;
+ } else {
+ ERROR(interface, "Hangup: no active call");
+ afb_req_fail(request, "failed hangup", NULL);
+ }
+}
+
+
+static void incoming_call_cb(OrgOfonoVoiceCallManager *manager, gchar *op, gchar *clip) {
+ WARNING(interface, "Incoming call from %s\n", clip);
+ incoming_call = strdup(op);
+}
+
+static void *main_loop_thread(void *unused)
+{
+ GMainLoop *loop = g_main_loop_new(NULL, FALSE);
+ g_main_loop_run(loop);
+ return NULL;
+}
+
+static int ofono_init(void)
+{
+ pthread_t tid;
+ int ret = 0;
+
+ /* Start the main loop thread */
+ pthread_create(&tid, NULL, main_loop_thread, NULL);
+
+ ofono_manager_init(interface);
+ const gchar *modem_path = ofono_manager_get_default_modem_path();
+ DEBUG(interface, "modem_path: %s\n", modem_path);
+ vcm = ofono_voicecallmanager_init(interface, modem_path, incoming_call_cb);
+ if (!vcm) {
+ ERROR(interface, "Failed to initialize voice call manager\n");
+ ret = -1;
+ }
+
+ return ret;
+}
+
+static const struct afb_verb_desc_v1 verbs[]= {
+ {
+ .name = "dial",
+ .session = AFB_SESSION_NONE,
+ .callback = dial,
+ .info = "Dial phone"
+ },
+ {
+ .name = "hangup",
+ .session = AFB_SESSION_NONE,
+ .callback = hangup,
+ .info = "Hangup phone"
+ },
+ {NULL}
+};
+
+static const struct afb_binding binding_desc = {
+ .type = AFB_BINDING_VERSION_1,
+ .v1 = {
+ .info = "telephony service",
+ .prefix = "telephony",
+ .verbs = verbs
+ }
+};
+
+const struct afb_binding *afbBindingV1Register (const struct afb_binding_interface *itf)
+{
+ interface = itf;
+
+ return &binding_desc;
+}
+
+int afbBindingV1ServiceInit(struct afb_service service)
+{
+ DEBUG(interface, "Initializing telephony service\n");
+
+ return ofono_init();
+}
diff --git a/telephony-binding/telephony-binding.pri b/telephony-binding/telephony-binding.pri
new file mode 100644
index 0000000..3448a56
--- /dev/null
+++ b/telephony-binding/telephony-binding.pri
@@ -0,0 +1,6 @@
+TEMPLATE = lib
+CONFIG += plugin use_c_linker
+CONFIG -= qt
+QMAKE_CFLAGS += -Wextra -Wconversion -Wno-unused-parameter -Werror=maybe-uninitialized -Werror=implicit-function-declaration -ffunction-sections -fdata-sections -Wl,--as-needed -Wl,--gc-sections
+
+DESTDIR = $${OUT_PWD}/../package/root/lib
diff --git a/telephony-binding/telephony-binding.pro b/telephony-binding/telephony-binding.pro
new file mode 100644
index 0000000..9ee3530
--- /dev/null
+++ b/telephony-binding/telephony-binding.pro
@@ -0,0 +1,17 @@
+TARGET = telephony-binding
+
+SOURCES = telephony-binding.c \
+ gdbus/ofono_manager.c \
+ gdbus/ofono_manager_interface.c \
+ gdbus/ofono_voicecall.c \
+ gdbus/ofono_voicecall_interface.c \
+ gdbus/ofono_voicecallmanager.c \
+ gdbus/ofono_voicecallmanager_interface.c
+
+INCLUDEPATH += $$PWD/gdbus
+LIBS += -Wl,--version-script=$$PWD/export.map
+
+CONFIG += link_pkgconfig
+PKGCONFIG += json-c afb-daemon glib-2.0 gio-2.0 gio-unix-2.0
+
+include(telephony-binding.pri)