aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2011-12-09 15:44:56 +0100
committerAleksander Morgado <aleksander@lanedo.com>2012-03-15 14:14:33 +0100
commit7acacbbfd76bb59f0e0b370b66cb283ddeb5bbd4 (patch)
tree62f38e633b0e4bec0a0cb2be16174f68e95f29db
parent838f38ec8c9561dcb5305617d665bc11258af953 (diff)
libmm-glib: simplify handling of interfaces
Avoid trying to merge all interfaces into the same set of APIs, and keep having a specific object (proxy) for each interface handled by the GDBusObjects reported listed by the GDBusObjectManager.
-rw-r--r--libmm-glib/Makefile.am4
-rw-r--r--libmm-glib/libmm-glib.h6
-rw-r--r--libmm-glib/mm-modem-3gpp.c302
-rw-r--r--libmm-glib/mm-modem-3gpp.h77
-rw-r--r--libmm-glib/mm-modem.c768
-rw-r--r--libmm-glib/mm-modem.h12
-rw-r--r--libmm-glib/mm-object.c129
-rw-r--r--libmm-glib/mm-object.h50
8 files changed, 916 insertions, 432 deletions
diff --git a/libmm-glib/Makefile.am b/libmm-glib/Makefile.am
index fabfcbc8..69a22633 100644
--- a/libmm-glib/Makefile.am
+++ b/libmm-glib/Makefile.am
@@ -13,8 +13,12 @@ libmm_glib_la_SOURCES = \
libmm-glib.h \
mm-manager.h \
mm-manager.c \
+ mm-object.h \
+ mm-object.c \
mm-modem.h \
mm-modem.c \
+ mm-modem-3gpp.h \
+ mm-modem-3gpp.c \
mm-sim.h \
mm-sim.c
diff --git a/libmm-glib/libmm-glib.h b/libmm-glib/libmm-glib.h
index 5452a516..f2867c69 100644
--- a/libmm-glib/libmm-glib.h
+++ b/libmm-glib/libmm-glib.h
@@ -23,7 +23,11 @@
#ifndef _LIBMM_GLIB_H_
#define _LIBMM_GLIB_H_
+#include <ModemManager.h>
+#include <mm-errors-types.h>
+#include <mm-enums-types.h>
+
#include <mm-manager.h>
-#include <mm-modem.h>
+#include <mm-object.h>
#endif /* _LIBMM_GLIB_H_ */
diff --git a/libmm-glib/mm-modem-3gpp.c b/libmm-glib/mm-modem-3gpp.c
new file mode 100644
index 00000000..ed316b85
--- /dev/null
+++ b/libmm-glib/mm-modem-3gpp.c
@@ -0,0 +1,302 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * libmm -- Access modem status & information from glib applications
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2011 Aleksander Morgado <aleksander@gnu.org>
+ */
+
+#include <gio/gio.h>
+
+#include "mm-modem-3gpp.h"
+
+/**
+ * mm_modem_3gpp_get_path:
+ * @self: A #MMModem3gpp.
+ *
+ * Gets the DBus path of the #MMObject which implements this interface.
+ *
+ * Returns: (transfer none): The DBus path of the #MMObject object.
+ */
+const gchar *
+mm_modem_3gpp_get_path (MMModem3gpp *self)
+{
+ g_return_val_if_fail (G_IS_DBUS_PROXY (self), NULL);
+
+ return g_dbus_proxy_get_object_path (G_DBUS_PROXY (self));
+}
+
+/**
+ * mm_modem_3gpp_dup_path:
+ * @self: A #MMModem3gpp.
+ *
+ * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ *
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ */
+gchar *
+mm_modem_3gpp_dup_path (MMModem3gpp *self)
+{
+ gchar *value;
+
+ g_return_val_if_fail (G_IS_DBUS_PROXY (self), NULL);
+
+ g_object_get (G_OBJECT (self),
+ "g-object-path", &value,
+ NULL);
+
+ return value;
+}
+
+/**
+ * mm_modem_3gpp_get_imei:
+ * @self: A #MMModem3gpp.
+ *
+ * Gets the <ulink url="http://en.wikipedia.org/wiki/Imei">IMEI</ulink>,
+ * as reported by this #MMModem.
+ *
+ * <warning>It is only safe to use this function on the thread where @self was constructed. Use mm_modem_3gpp_dup_imei() if on another thread.</warning>
+ *
+ * Returns: (transfer none): The IMEI, or %NULL if none available.
+ */
+const gchar *
+mm_modem_3gpp_get_imei (MMModem3gpp *self)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM3GPP (self), NULL);
+
+ return mm_gdbus_modem3gpp_get_imei (self);
+}
+
+/**
+ * mm_modem_3gpp_dup_imei:
+ * @self: A #MMModem3gpp.
+ *
+ * Gets a copy of the <ulink url="http://en.wikipedia.org/wiki/Imei">IMEI</ulink>,
+ * as reported by this #MMModem.
+ *
+ * Returns: (transfer full): The IMEI, or %NULL if none available. The returned value should be freed with g_free().
+ */
+gchar *
+mm_modem_3gpp_dup_imei (MMModem3gpp *self)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM3GPP (self), NULL);
+
+ return mm_gdbus_modem3gpp_dup_imei (self);
+}
+
+/**
+ * mm_modem_3gpp_get_operator_code:
+ * @self: A #MMModem3gpp.
+ *
+ * Gets the code of the operator to which the mobile is
+ * currently registered.
+ *
+ * Returned in the format <literal>"MCCMNC"</literal>, where
+ * <literal>MCC</literal> is the three-digit ITU E.212 Mobile Country Code
+ * and <literal>MNC</literal> is the two- or three-digit GSM Mobile Network
+ * Code. e.g. e<literal>"31026"</literal> or <literal>"310260"</literal>.
+ *
+ * If the <literal>MCC</literal> and <literal>MNC</literal> are not known
+ * or the mobile is not registered to a mobile network, this property will
+ * be a zero-length (blank) string.
+ *
+ * <warning>It is only safe to use this function on the thread where @self was constructed. Use mm_modem_3gpp_dup_operator_code() if on another thread.</warning>
+ *
+ * Returns: (transfer none): The operator code, or %NULL if none available.
+ */
+const gchar *
+mm_modem_3gpp_get_operator_code (MMModem3gpp *self)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM3GPP (self), NULL);
+
+ return mm_gdbus_modem3gpp_get_operator_code (self);
+}
+
+/**
+ * mm_modem_3gpp_dup_operator_code:
+ * @self: A #MMModem3gpp.
+ *
+ * Gets a copy of the code of the operator to which the mobile is
+ * currently registered.
+ *
+ * Returned in the format <literal>"MCCMNC"</literal>, where
+ * <literal>MCC</literal> is the three-digit ITU E.212 Mobile Country Code
+ * and <literal>MNC</literal> is the two- or three-digit GSM Mobile Network
+ * Code. e.g. e<literal>"31026"</literal> or <literal>"310260"</literal>.
+ *
+ * Returns: (transfer full): The operator code, or %NULL if none available. The returned value should be freed with g_free().
+ */
+gchar *
+mm_modem_3gpp_dup_operator_code (MMModem3gpp *self)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM3GPP (self), NULL);
+
+ return mm_gdbus_modem3gpp_dup_operator_code (self);
+}
+
+/**
+ * mm_modem_3gpp_get_operator_name:
+ * @self: A #MMModem3gpp.
+ *
+ * Gets the name of the operator to which the mobile is
+ * currently registered.
+ *
+ * <warning>It is only safe to use this function on the thread where @self was constructed. Use mm_modem_3gpp_dup_operator_name() if on another thread.</warning>
+ *
+ * Returns: (transfer none): The operator name, or %NULL if none available.
+ */
+const gchar *
+mm_modem_3gpp_get_operator_name (MMModem3gpp *self)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM3GPP (self), NULL);
+
+ return mm_gdbus_modem3gpp_get_operator_name (self);
+}
+
+/**
+ * mm_modem_3gpp_dup_operator_name:
+ * @self: A #MMModem3gpp.
+ *
+ * Gets a copy of the name of the operator to which the mobile is
+ * currently registered.
+ *
+ * Returns: (transfer full): The operator name, or %NULL if none available. The returned value should be freed with g_free().
+ */
+gchar *
+mm_modem_3gpp_dup_operator_name (MMModem3gpp *self)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM3GPP (self), NULL);
+
+ return mm_gdbus_modem3gpp_dup_operator_name (self);
+}
+
+/**
+ * mm_modem_3gpp_get_registration_state:
+ * @self: A #MMModem.
+ *
+ * Get the the mobile registration status as defined in 3GPP TS 27.007
+ * section 10.1.19.
+ *
+ * Returns: A #MMModem3gppRegistrationState value, specifying the current registration state.
+ */
+MMModem3gppRegistrationState
+mm_modem_3gpp_get_registration_state (MMModem3gpp *self)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM3GPP (self), MM_MODEM_3GPP_REGISTRATION_STATE_IDLE);
+
+ return mm_gdbus_modem3gpp_get_registration_state (self);
+}
+
+/**
+ * mm_modem_3gpp_get_enabled_facility_locks:
+ * @self: A #MMModem3gpp.
+ *
+ * Get the list of facilities for which PIN locking is enabled.
+ *
+ * Returns: A bitmask of #MMModem3gppFacility flags, specifying which facilities have locks enabled.
+ */
+MMModem3gppFacility
+mm_modem_3gpp_get_enabled_facility_locks (MMModem3gpp *self)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM3GPP (self), MM_MODEM_3GPP_FACILITY_NONE);
+
+ return mm_gdbus_modem3gpp_get_enabled_facility_locks (self);
+}
+
+void
+mm_modem_3gpp_register (MMModem3gpp *self,
+ const gchar *network_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_return_if_fail (MM_GDBUS_IS_MODEM3GPP (self));
+
+ mm_gdbus_modem3gpp_call_register (self,
+ network_id,
+ cancellable,
+ callback,
+ user_data);
+}
+
+gboolean
+mm_modem_3gpp_register_finish (MMModem3gpp *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM3GPP (self), FALSE);
+
+ return mm_gdbus_modem3gpp_call_register_finish (self,
+ res,
+ error);
+}
+
+gboolean
+mm_modem_3gpp_register_sync (MMModem3gpp *self,
+ const gchar *network_id,
+ GCancellable *cancellable,
+ GError **error)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM3GPP (self), FALSE);
+
+ return mm_gdbus_modem3gpp_call_register_sync (self,
+ network_id,
+ cancellable,
+ error);
+}
+
+void
+mm_modem_3gpp_scan (MMModem3gpp *self,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_return_if_fail (MM_GDBUS_IS_MODEM3GPP (self));
+
+ mm_gdbus_modem3gpp_call_scan (self,
+ cancellable,
+ callback,
+ user_data);
+}
+
+gboolean
+mm_modem_3gpp_scan_finish (MMModem3gpp *self,
+ GVariant **results,
+ GAsyncResult *res,
+ GError **error)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM3GPP (self), FALSE);
+
+ return mm_gdbus_modem3gpp_call_scan_finish (self,
+ results,
+ res,
+ error);
+}
+
+gboolean
+mm_modem_3gpp_scan_sync (MMModem3gpp *self,
+ GVariant **results,
+ GCancellable *cancellable,
+ GError **error)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM3GPP (self), FALSE);
+
+ return mm_gdbus_modem3gpp_call_scan_sync (self,
+ results,
+ cancellable,
+ error);
+}
diff --git a/libmm-glib/mm-modem-3gpp.h b/libmm-glib/mm-modem-3gpp.h
new file mode 100644
index 00000000..ca784b85
--- /dev/null
+++ b/libmm-glib/mm-modem-3gpp.h
@@ -0,0 +1,77 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * libmm -- Access modem status & information from glib applications
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2011 Aleksander Morgado <aleksander@gnu.org>
+ */
+
+#ifndef _MM_MODEM_3GPP_H_
+#define _MM_MODEM_3GPP_H_
+
+#include <ModemManager.h>
+#include <mm-gdbus-modem.h>
+
+G_BEGIN_DECLS
+
+typedef MmGdbusModem3gpp MMModem3gpp;
+#define MM_TYPE_MODEM_3GPP(o) MM_GDBUS_TYPE_MODEM3GPP (o)
+#define MM_MODEM_3GPP(o) MM_GDBUS_MODEM3GPP(o)
+#define MM_IS_MODEM_3GPP(o) MM_GDBUS_IS_MODEM3GPP(o)
+
+const gchar *mm_modem_3gpp_get_path (MMModem3gpp *self);
+gchar *mm_modem_3gpp_dup_path (MMModem3gpp *self);
+
+const gchar *mm_modem_3gpp_get_imei (MMModem3gpp *self);
+gchar *mm_modem_3gpp_dup_imei (MMModem3gpp *self);
+const gchar *mm_modem_3gpp_get_operator_code (MMModem3gpp *self);
+gchar *mm_modem_3gpp_dup_operator_code (MMModem3gpp *self);
+const gchar *mm_modem_3gpp_get_operator_name (MMModem3gpp *self);
+gchar *mm_modem_3gpp_dup_operator_name (MMModem3gpp *self);
+MMModem3gppRegistrationState mm_modem_3gpp_get_registration_state (MMModem3gpp *self);
+MMModem3gppFacility mm_modem_3gpp_get_enabled_facility_locks (MMModem3gpp *self);
+
+
+void mm_modem_3gpp_register (MMModem3gpp *self,
+ const gchar *network_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean mm_modem_3gpp_register_finish (MMModem3gpp *self,
+ GAsyncResult *res,
+ GError **error);
+gboolean mm_modem_3gpp_register_sync (MMModem3gpp *self,
+ const gchar *network_id,
+ GCancellable *cancellable,
+ GError **error);
+
+void mm_modem_3gpp_scan (MMModem3gpp *self,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean mm_modem_3gpp_scan_finish (MMModem3gpp *self,
+ GVariant **results,
+ GAsyncResult *res,
+ GError **error);
+gboolean mm_modem_3gpp_scan_sync (MMModem3gpp *self,
+ GVariant **results,
+ GCancellable *cancellable,
+ GError **error);
+
+G_END_DECLS
+
+#endif /* _MM_MODEM_3GPP_H_ */
diff --git a/libmm-glib/mm-modem.c b/libmm-glib/mm-modem.c
index f6c6dfd7..7e840805 100644
--- a/libmm-glib/mm-modem.c
+++ b/libmm-glib/mm-modem.c
@@ -28,16 +28,38 @@
* mm_modem_get_path:
* @self: A #MMModem.
*
- * Gets the DBus path of the #MMModem object.
+ * Gets the DBus path of the #MMObject which implements this interface.
*
- * Returns: (transfer none): The DBus path of the #MMModem object.
+ * Returns: (transfer none): The DBus path of the #MMObject object.
*/
const gchar *
mm_modem_get_path (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (G_IS_DBUS_PROXY (self), NULL);
- return g_dbus_object_get_object_path (G_DBUS_OBJECT (self));
+ return g_dbus_proxy_get_object_path (G_DBUS_PROXY (self));
+}
+
+/**
+ * mm_modem_dup_path:
+ * @self: A #MMModem.
+ *
+ * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ *
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ */
+gchar *
+mm_modem_dup_path (MMModem *self)
+{
+ gchar *value;
+
+ g_return_val_if_fail (G_IS_DBUS_PROXY (self), NULL);
+
+ g_object_get (G_OBJECT (self),
+ "g-object-path", &value,
+ NULL);
+
+ return value;
}
/**
@@ -53,10 +75,9 @@ mm_modem_get_path (MMModem *self)
const gchar *
mm_modem_get_sim_path (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- return (mm_gdbus_modem_get_sim (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return mm_gdbus_modem_get_sim (self);
}
/**
@@ -70,15 +91,9 @@ mm_modem_get_sim_path (MMModem *self)
gchar *
mm_modem_dup_sim_path (MMModem *self)
{
- gchar *sim_path;
- MmGdbusModem *modem;
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
-
- modem = mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self));
- sim_path = mm_gdbus_modem_dup_sim (modem);
- g_object_unref (modem);
- return sim_path;
+ return mm_gdbus_modem_dup_sim (self);
}
/**
@@ -96,10 +111,9 @@ mm_modem_dup_sim_path (MMModem *self)
MMModemCapability
mm_modem_get_modem_capabilities (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), MM_MODEM_CAPABILITY_NONE);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), MM_MODEM_CAPABILITY_NONE);
- return (mm_gdbus_modem_get_modem_capabilities (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return (MMModemCapability) mm_gdbus_modem_get_modem_capabilities (self);
}
/**
@@ -114,10 +128,9 @@ mm_modem_get_modem_capabilities (MMModem *self)
MMModemCapability
mm_modem_get_current_capabilities (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), MM_MODEM_CAPABILITY_NONE);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), MM_MODEM_CAPABILITY_NONE);
- return (mm_gdbus_modem_get_current_capabilities (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return mm_gdbus_modem_get_current_capabilities (self);
}
/**
@@ -138,10 +151,9 @@ mm_modem_get_current_capabilities (MMModem *self)
guint
mm_modem_get_max_bearers (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), 0);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), 0);
- return (mm_gdbus_modem_get_max_bearers (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return mm_gdbus_modem_get_max_bearers (self);
}
/**
@@ -159,10 +171,9 @@ mm_modem_get_max_bearers (MMModem *self)
guint
mm_modem_get_max_active_bearers (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), 0);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), 0);
- return (mm_gdbus_modem_get_max_active_bearers (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return mm_gdbus_modem_get_max_active_bearers (self);
}
/**
@@ -178,10 +189,9 @@ mm_modem_get_max_active_bearers (MMModem *self)
const gchar *
mm_modem_get_manufacturer (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- return (mm_gdbus_modem_get_manufacturer (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return mm_gdbus_modem_get_manufacturer (self);
}
/**
@@ -195,15 +205,9 @@ mm_modem_get_manufacturer (MMModem *self)
gchar *
mm_modem_dup_manufacturer (MMModem *self)
{
- gchar *manufacturer;
- MmGdbusModem *modem;
-
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- modem = mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self));
- manufacturer = mm_gdbus_modem_dup_manufacturer (modem);
- g_object_unref (modem);
- return manufacturer;
+ return mm_gdbus_modem_dup_manufacturer (self);
}
/**
@@ -219,10 +223,9 @@ mm_modem_dup_manufacturer (MMModem *self)
const gchar *
mm_modem_get_model (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- return (mm_gdbus_modem_get_model (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return mm_gdbus_modem_get_model (self);
}
/**
@@ -236,15 +239,9 @@ mm_modem_get_model (MMModem *self)
gchar *
mm_modem_dup_model (MMModem *self)
{
- gchar *model;
- MmGdbusModem *modem;
-
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- modem = mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self));
- model = mm_gdbus_modem_dup_model (modem);
- g_object_unref (modem);
- return model;
+ return mm_gdbus_modem_dup_model (self);
}
/**
@@ -260,10 +257,9 @@ mm_modem_dup_model (MMModem *self)
const gchar *
mm_modem_get_revision (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- return (mm_gdbus_modem_get_revision (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return mm_gdbus_modem_get_revision (self);
}
/**
@@ -277,15 +273,9 @@ mm_modem_get_revision (MMModem *self)
gchar *
mm_modem_dup_revision (MMModem *self)
{
- gchar *revision;
- MmGdbusModem *modem;
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
-
- modem = mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self));
- revision = mm_gdbus_modem_dup_revision (modem);
- g_object_unref (modem);
- return revision;
+ return mm_gdbus_modem_dup_revision (self);
}
/**
@@ -310,10 +300,9 @@ mm_modem_dup_revision (MMModem *self)
const gchar *
mm_modem_get_device_identifier (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- return (mm_gdbus_modem_get_device_identifier (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return mm_gdbus_modem_get_device_identifier (self);
}
/**
@@ -336,15 +325,9 @@ mm_modem_get_device_identifier (MMModem *self)
gchar *
mm_modem_dup_device_identifier (MMModem *self)
{
- gchar *device_identifier;
- MmGdbusModem *modem;
-
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- modem = mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self));
- device_identifier = mm_gdbus_modem_dup_device_identifier (modem);
- g_object_unref (modem);
- return device_identifier;
+ return mm_gdbus_modem_dup_device_identifier (self);
}
/**
@@ -361,10 +344,9 @@ mm_modem_dup_device_identifier (MMModem *self)
const gchar *
mm_modem_get_device (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- return (mm_gdbus_modem_get_device (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return mm_gdbus_modem_get_device (self);
}
/**
@@ -379,15 +361,9 @@ mm_modem_get_device (MMModem *self)
gchar *
mm_modem_dup_device (MMModem *self)
{
- gchar *device;
- MmGdbusModem *modem;
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
-
- modem = mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self));
- device = mm_gdbus_modem_dup_device (modem);
- g_object_unref (modem);
- return device;
+ return mm_gdbus_modem_dup_device (self);
}
/**
@@ -404,10 +380,9 @@ mm_modem_dup_device (MMModem *self)
const gchar *
mm_modem_get_driver (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- return (mm_gdbus_modem_get_driver (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return mm_gdbus_modem_get_driver (self);
}
/**
@@ -422,15 +397,9 @@ mm_modem_get_driver (MMModem *self)
gchar *
mm_modem_dup_driver (MMModem *self)
{
- gchar *driver;
- MmGdbusModem *modem;
-
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- modem = mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self));
- driver = mm_gdbus_modem_dup_driver (modem);
- g_object_unref (modem);
- return driver;
+ return mm_gdbus_modem_dup_driver (self);
}
/**
@@ -446,10 +415,9 @@ mm_modem_dup_driver (MMModem *self)
const gchar *
mm_modem_get_plugin (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- return (mm_gdbus_modem_get_plugin (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return mm_gdbus_modem_get_plugin (self);
}
/**
@@ -463,15 +431,9 @@ mm_modem_get_plugin (MMModem *self)
gchar *
mm_modem_dup_plugin (MMModem *self)
{
- gchar *plugin;
- MmGdbusModem *modem;
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
-
- modem = mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self));
- plugin = mm_gdbus_modem_dup_plugin (modem);
- g_object_unref (modem);
- return plugin;
+ return mm_gdbus_modem_dup_plugin (self);
}
/**
@@ -490,10 +452,9 @@ mm_modem_dup_plugin (MMModem *self)
const gchar *
mm_modem_get_equipment_identifier (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- return (mm_gdbus_modem_get_equipment_identifier (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return mm_gdbus_modem_get_equipment_identifier (self);
}
/**
@@ -510,15 +471,9 @@ mm_modem_get_equipment_identifier (MMModem *self)
gchar *
mm_modem_dup_equipment_identifier (MMModem *self)
{
- gchar *equipment_identifier;
- MmGdbusModem *modem;
-
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
- modem = mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self));
- equipment_identifier = mm_gdbus_modem_dup_equipment_identifier (modem);
- g_object_unref (modem);
- return equipment_identifier;
+ return mm_gdbus_modem_dup_equipment_identifier (self);
}
/**
@@ -532,10 +487,9 @@ mm_modem_dup_equipment_identifier (MMModem *self)
MMModemLock
mm_modem_get_unlock_required (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), MM_MODEM_LOCK_UNKNOWN);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), MM_MODEM_LOCK_UNKNOWN);
- return (mm_gdbus_modem_get_unlock_required (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return (MMModemLock) mm_gdbus_modem_get_unlock_required (self);
}
/**
@@ -551,10 +505,9 @@ mm_modem_get_unlock_required (MMModem *self)
guint
mm_modem_get_unlock_retries (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), 0);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), 0);
- return (mm_gdbus_modem_get_unlock_retries (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return mm_gdbus_modem_get_unlock_retries (self);
}
/**
@@ -568,10 +521,9 @@ mm_modem_get_unlock_retries (MMModem *self)
MMModemState
mm_modem_get_state (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), MM_MODEM_STATE_UNKNOWN);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), MM_MODEM_STATE_UNKNOWN);
- return (mm_gdbus_modem_get_state (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return (MMModemState) mm_gdbus_modem_get_state (self);
}
/**
@@ -586,10 +538,9 @@ mm_modem_get_state (MMModem *self)
MMModemAccessTech
mm_modem_get_access_technology (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), MM_MODEM_ACCESS_TECH_UNKNOWN);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), MM_MODEM_ACCESS_TECH_UNKNOWN);
- return (mm_gdbus_modem_get_access_technology (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return (MMModemAccessTech) mm_gdbus_modem_get_access_technology (self);
}
/**
@@ -612,10 +563,9 @@ mm_modem_get_signal_quality (MMModem *self,
gboolean is_recent = FALSE;
guint quality = 0;
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), 0);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), 0);
- variant = (mm_gdbus_modem_get_signal_quality (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ variant = mm_gdbus_modem_get_signal_quality (self);
if (variant) {
g_variant_get (variant,
"(ub)",
@@ -641,10 +591,9 @@ mm_modem_get_signal_quality (MMModem *self,
MMModemMode
mm_modem_get_supported_modes (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), MM_MODEM_MODE_NONE);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), MM_MODEM_MODE_NONE);
- return (mm_gdbus_modem_get_supported_modes (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return (MMModemMode) mm_gdbus_modem_get_supported_modes (self);
}
/**
@@ -661,10 +610,9 @@ mm_modem_get_supported_modes (MMModem *self)
MMModemMode
mm_modem_get_allowed_modes (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), MM_MODEM_MODE_NONE);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), MM_MODEM_MODE_NONE);
- return (mm_gdbus_modem_get_allowed_modes (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return (MMModemMode) mm_gdbus_modem_get_allowed_modes (self);
}
/**
@@ -679,10 +627,9 @@ mm_modem_get_allowed_modes (MMModem *self)
MMModemMode
mm_modem_get_preferred_mode (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), MM_MODEM_MODE_NONE);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), MM_MODEM_MODE_NONE);
- return (mm_gdbus_modem_get_preferred_mode (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return (MMModemMode) mm_gdbus_modem_get_preferred_mode (self);
}
/**
@@ -698,10 +645,9 @@ mm_modem_get_preferred_mode (MMModem *self)
MMModemBand
mm_modem_get_supported_bands (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), MM_MODEM_MODE_NONE);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), MM_MODEM_MODE_NONE);
- return (mm_gdbus_modem_get_supported_bands (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return (MMModemBand) mm_gdbus_modem_get_supported_bands (self);
}
/**
@@ -718,62 +664,11 @@ mm_modem_get_supported_bands (MMModem *self)
MMModemBand
mm_modem_get_allowed_bands (MMModem *self)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), MM_MODEM_MODE_NONE);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), MM_MODEM_MODE_NONE);
- return (mm_gdbus_modem_get_allowed_bands (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self))));
+ return (MMModemBand) mm_gdbus_modem_get_allowed_bands (self);
}
-#define BOOL_REPLY_READY_FN(NAME) \
- static void \
- common_##NAME##_ready (MmGdbusModem *modem_iface_proxy, \
- GAsyncResult *res, \
- GSimpleAsyncResult *simple) \
- { \
- GError *error = NULL; \
- \
- if (!mm_gdbus_modem_call_##NAME##_finish ( \
- modem_iface_proxy, \
- res, \
- &error)) \
- g_simple_async_result_take_error (simple, error); \
- else \
- g_simple_async_result_set_op_res_gboolean (simple, TRUE); \
- \
- /* balance ref count */ \
- g_object_unref (modem_iface_proxy); \
- g_simple_async_result_complete (simple); \
- g_object_unref (simple); \
- }
-
-#define BOOL_REPLY_FINISH_FN(NAME) \
- gboolean \
- mm_modem_##NAME##_finish (MMModem *self, \
- GAsyncResult *res, \
- GError **error) \
- { \
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), FALSE); \
- \
- if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error)) \
- return FALSE; \
- \
- return g_simple_async_result_get_op_res_gboolean (G_SIMPLE_ASYNC_RESULT (res)); \
- }
-
-BOOL_REPLY_READY_FN (enable)
-
-/**
- * mm_modem_enable_finish:
- * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_enable().
- * @error: Return location for error or %NULL.
- *
- * Finishes an operation started with mm_modem_enable().
- *
- * Returns: (skip): %TRUE if the modem was properly enabled, %FALSE if @error is set.
- */
-BOOL_REPLY_FINISH_FN (enable)
-
/**
* mm_modem_enable:
* @self: A #MMModem.
@@ -796,20 +691,33 @@ mm_modem_enable (MMModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *result;
+ g_return_if_fail (MM_GDBUS_IS_MODEM (self));
- g_return_if_fail (MM_GDBUS_IS_OBJECT (self));
+ mm_gdbus_modem_call_enable (self,
+ TRUE,
+ cancellable,
+ callback,
+ user_data);
+}
- result = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- mm_modem_enable);
- mm_gdbus_modem_call_enable (
- mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self)), /* unref later */
- TRUE,
- cancellable,
- (GAsyncReadyCallback)common_enable_ready,
- result);
+/**
+ * mm_modem_enable_finish:
+ * @self: A #MMModem.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_enable().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with mm_modem_enable().
+ *
+ * Returns: (skip): %TRUE if the modem was properly enabled, %FALSE if @error is set.
+ */
+gboolean
+mm_modem_enable_finish (MMModem *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+
+ return mm_gdbus_modem_call_enable_finish (self, res, error);
}
/**
@@ -832,47 +740,15 @@ mm_modem_enable_sync (MMModem *self,
GCancellable *cancellable,
GError **error)
{
- return (mm_gdbus_modem_call_enable_sync (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self)),
- TRUE,
- cancellable,
- error));
-}
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
-static void
-modem_disable_ready (MmGdbusModem *modem_iface_proxy,
- GAsyncResult *res,
- GSimpleAsyncResult *simple)
-{
- GError *error = NULL;
-
- if (mm_gdbus_modem_call_enable_finish (
- modem_iface_proxy,
- res,
- &error))
- g_simple_async_result_take_error (simple, error);
- else
- g_simple_async_result_set_op_res_gboolean (simple, TRUE);
-
- /* balance ref count */
- g_object_unref (modem_iface_proxy);
- g_simple_async_result_complete (simple);
- g_object_unref (simple);
+ return mm_gdbus_modem_call_enable_sync (self,
+ TRUE,
+ cancellable,
+ error);
}
/**
- * mm_modem_disable_finish:
- * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_disable().
- * @error: Return location for error or %NULL.
- *
- * Finishes an operation started with mm_modem_disable().
- *
- * Returns: (skip): %TRUE if the modem was properly disabled, %FALSE if @error is set.
- */
-BOOL_REPLY_FINISH_FN (disable)
-
-/**
* mm_modem_disable:
* @self: A #MMModem.
* @cancellable: (allow-none): A #GCancellable or %NULL.
@@ -893,20 +769,33 @@ mm_modem_disable (MMModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *result;
+ g_return_if_fail (MM_GDBUS_IS_MODEM (self));
- g_return_if_fail (MM_GDBUS_IS_OBJECT (self));
+ mm_gdbus_modem_call_enable (self,
+ FALSE,
+ cancellable,
+ callback,
+ user_data);
+}
- result = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- mm_modem_disable);
- mm_gdbus_modem_call_enable (
- mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self)), /* unref later */
- FALSE,
- cancellable,
- (GAsyncReadyCallback)modem_disable_ready,
- result);
+/**
+ * mm_modem_disable_finish:
+ * @self: A #MMModem.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_disable().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with mm_modem_disable().
+ *
+ * Returns: (skip): %TRUE if the modem was properly disabled, %FALSE if @error is set.
+ */
+gboolean
+mm_modem_disable_finish (MMModem *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+
+ return mm_gdbus_modem_call_enable_finish (self, res, error);
}
/**
@@ -928,38 +817,34 @@ mm_modem_disable_sync (MMModem *self,
GCancellable *cancellable,
GError **error)
{
- return (mm_gdbus_modem_call_enable_sync (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self)),
- FALSE,
- cancellable,
- error));
-}
-
-static void
-create_bearer_ready (MmGdbusModem *modem_iface_proxy,
- GAsyncResult *res,
- GSimpleAsyncResult *simple)
-{
- GError *error = NULL;
- gchar *path = NULL;
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
- if (mm_gdbus_modem_call_create_bearer_finish (
- modem_iface_proxy,
- &path,
- res,
- &error)) {
- g_simple_async_result_take_error (simple, error);
- g_free (path);
- }
- else
- g_simple_async_result_set_op_res_gpointer (simple, path, NULL);
-
- /* balance ref count */
- g_object_unref (modem_iface_proxy);
- g_simple_async_result_complete (simple);
- g_object_unref (simple);
+ return mm_gdbus_modem_call_enable_sync (self,
+ FALSE,
+ cancellable,
+ error);
}
+/**
+ * mm_modem_create_bearer:
+ * @self: A #MMModem.
+ * @properties: A dictionary with signature a{ss} with the properties to be used when creating the bearer.
+ * @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 creates a new packet data bearer in the #MMModem.
+ *
+ * This request may fail if the modem does not support additional bearers,
+ * if too many bearers are already defined, or if @properties are invalid.
+ *
+ * See <link linkend="gdbus-method-org-freedesktop-ModemManager1-Modem.CreateBearer">CreateBearer</link> to check which properties may be passed.
+ *
+ * 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 mm_modem_create_bearer_finish() to get the result of the operation.
+ *
+ * See mm_modem_create_bearer_sync() for the synchronous, blocking version of this method.
+ */
void
mm_modem_create_bearer (MMModem *self,
GVariant *properties,
@@ -967,43 +852,60 @@ mm_modem_create_bearer (MMModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *result;
-
- g_return_if_fail (MM_GDBUS_IS_OBJECT (self));
+ g_return_if_fail (MM_GDBUS_IS_MODEM (self));
- result = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- mm_modem_create_bearer);
- mm_gdbus_modem_call_create_bearer (
- mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self)), /* unref later */
- properties,
- cancellable,
- (GAsyncReadyCallback)create_bearer_ready,
- result);
+ mm_gdbus_modem_call_create_bearer (self,
+ properties,
+ cancellable,
+ callback,
+ user_data);
}
+/**
+ * mm_modem_create_bearer_finish:
+ * @self: A #MMModem.
+ * @out_path: (out): Return location for the object path of the newly created bearer, or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_create_bearer().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with mm_modem_create_bearer().
+ *
+ * Returns: (skip): %TRUE if the bearer was created, %FALSE if @error is set.
+ */
gboolean
mm_modem_create_bearer_finish (MMModem *self,
gchar **out_path,
GAsyncResult *res,
GError **error)
{
- gchar *path;
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), FALSE);
-
- if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error))
- return FALSE;
-
- path = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res));
- if (!out_path)
- g_free (path);
- else
- *out_path = path;
- return TRUE;
+ return mm_gdbus_modem_call_create_bearer_finish (self,
+ out_path,
+ res,
+ error);
}
+/**
+ * mm_modem_create_bearer_sync:
+ * @self: A #MMModem.
+ * @properties: A dictionary with signature a{ss} with the properties to be used when creating the bearer.
+ * @out_path: (out): Return location for the object path of the newly created bearer, or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously creates a new packet data bearer in the #MMModem.
+ *
+ * This request may fail if the modem does not support additional bearers,
+ * if too many bearers are already defined, or if @properties are invalid.
+ *
+ * See <link linkend="gdbus-method-org-freedesktop-ModemManager1-Modem.CreateBearer">CreateBearer</link> to check which properties may be passed.
+ *
+ * The calling thread is blocked until a reply is received. See mm_modem_create_bearer()
+ * for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the bearer was created, %FALSE if @error is set.
+ */
gboolean
mm_modem_create_bearer_sync (MMModem *self,
GVariant *properties,
@@ -1011,16 +913,14 @@ mm_modem_create_bearer_sync (MMModem *self,
GCancellable *cancellable,
GError **error)
{
- return (mm_gdbus_modem_call_create_bearer_sync (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self)),
- properties,
- out_path,
- cancellable,
- error));
-}
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
-BOOL_REPLY_READY_FN (delete_bearer)
-BOOL_REPLY_FINISH_FN (delete_bearer)
+ return mm_gdbus_modem_call_create_bearer_sync (self,
+ properties,
+ out_path,
+ cancellable,
+ error);
+}
void
mm_modem_delete_bearer (MMModem *self,
@@ -1029,20 +929,25 @@ mm_modem_delete_bearer (MMModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *result;
+ g_return_if_fail (MM_GDBUS_IS_MODEM (self));
- g_return_if_fail (MM_GDBUS_IS_OBJECT (self));
+ mm_gdbus_modem_call_delete_bearer (self,
+ bearer,
+ cancellable,
+ callback,
+ user_data);
+}
- result = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- mm_modem_delete_bearer);
- mm_gdbus_modem_call_delete_bearer (
- mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self)), /* unref later */
- bearer,
- cancellable,
- (GAsyncReadyCallback)common_delete_bearer_ready,
- result);
+gboolean
+mm_modem_delete_bearer_finish (MMModem *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+
+ return mm_gdbus_modem_call_delete_bearer_finish (self,
+ res,
+ error);
}
gboolean
@@ -1051,15 +956,13 @@ mm_modem_delete_bearer_sync (MMModem *self,
GCancellable *cancellable,
GError **error)
{
- return (mm_gdbus_modem_call_delete_bearer_sync (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self)),
- bearer,
- cancellable,
- error));
-}
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
-BOOL_REPLY_READY_FN (reset)
-BOOL_REPLY_FINISH_FN (reset)
+ return mm_gdbus_modem_call_delete_bearer_sync (self,
+ bearer,
+ cancellable,
+ error);
+}
void
mm_modem_reset (MMModem *self,
@@ -1067,19 +970,24 @@ mm_modem_reset (MMModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *result;
+ g_return_if_fail (MM_GDBUS_IS_MODEM (self));
- g_return_if_fail (MM_GDBUS_IS_OBJECT (self));
+ mm_gdbus_modem_call_reset (self,
+ cancellable,
+ callback,
+ user_data);
+}
- result = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- mm_modem_reset);
- mm_gdbus_modem_call_reset (
- mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self)), /* unref later */
- cancellable,
- (GAsyncReadyCallback)common_reset_ready,
- result);
+gboolean
+mm_modem_reset_finish (MMModem *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+
+ return mm_gdbus_modem_call_reset_finish (self,
+ res,
+ error);
}
gboolean
@@ -1087,14 +995,12 @@ mm_modem_reset_sync (MMModem *self,
GCancellable *cancellable,
GError **error)
{
- return (mm_gdbus_modem_call_reset_sync (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self)),
- cancellable,
- error));
-}
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
-BOOL_REPLY_READY_FN (factory_reset)
-BOOL_REPLY_FINISH_FN (factory_reset)
+ return mm_gdbus_modem_call_reset_sync (self,
+ cancellable,
+ error);
+}
void
mm_modem_factory_reset (MMModem *self,
@@ -1103,20 +1009,25 @@ mm_modem_factory_reset (MMModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *result;
+ g_return_if_fail (MM_GDBUS_IS_MODEM (self));
- g_return_if_fail (MM_GDBUS_IS_OBJECT (self));
+ mm_gdbus_modem_call_factory_reset (self,
+ code,
+ cancellable,
+ callback,
+ user_data);
+}
- result = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- mm_modem_factory_reset);
- mm_gdbus_modem_call_factory_reset (
- mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self)), /* unref later */
- code,
- cancellable,
- (GAsyncReadyCallback)common_factory_reset_ready,
- result);
+gboolean
+mm_modem_factory_reset_finish (MMModem *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+
+ return mm_gdbus_modem_call_factory_reset_finish (self,
+ res,
+ error);
}
gboolean
@@ -1125,15 +1036,25 @@ mm_modem_factory_reset_sync (MMModem *self,
GCancellable *cancellable,
GError **error)
{
- return (mm_gdbus_modem_call_factory_reset_sync (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self)),
- code,
- cancellable,
- error));
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+
+ return mm_gdbus_modem_call_factory_reset_sync (self,
+ code,
+ cancellable,
+ error);
}
-BOOL_REPLY_READY_FN (set_allowed_modes)
-BOOL_REPLY_FINISH_FN (set_allowed_modes)
+gboolean
+mm_modem_set_allowed_modes_finish (MMModem *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+
+ return mm_gdbus_modem_call_set_allowed_modes_finish (self,
+ res,
+ error);
+}
void
mm_modem_set_allowed_modes (MMModem *self,
@@ -1143,21 +1064,14 @@ mm_modem_set_allowed_modes (MMModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *result;
-
- g_return_if_fail (MM_GDBUS_IS_OBJECT (self));
-
- result = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- mm_modem_set_allowed_modes);
- mm_gdbus_modem_call_set_allowed_modes (
- mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self)), /* unref later */
- modes,
- preferred,
- cancellable,
- (GAsyncReadyCallback)common_set_allowed_modes_ready,
- result);
+ g_return_if_fail (MM_GDBUS_IS_MODEM (self));
+
+ mm_gdbus_modem_call_set_allowed_modes (self,
+ modes,
+ preferred,
+ cancellable,
+ callback,
+ user_data);
}
gboolean
@@ -1167,16 +1081,26 @@ mm_modem_set_allowed_modes_sync (MMModem *self,
GCancellable *cancellable,
GError **error)
{
- return (mm_gdbus_modem_call_set_allowed_modes_sync (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self)),
- modes,
- preferred,
- cancellable,
- error));
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+
+ return mm_gdbus_modem_call_set_allowed_modes_sync (self,
+ modes,
+ preferred,
+ cancellable,
+ error);
}
-BOOL_REPLY_READY_FN (set_allowed_bands)
-BOOL_REPLY_FINISH_FN (set_allowed_bands)
+gboolean
+mm_modem_set_allowed_bands_finish (MMModem *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+
+ return mm_gdbus_modem_call_set_allowed_bands_finish (self,
+ res,
+ error);
+}
void
mm_modem_set_allowed_bands (MMModem *self,
@@ -1185,20 +1109,13 @@ mm_modem_set_allowed_bands (MMModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *result;
-
- g_return_if_fail (MM_GDBUS_IS_OBJECT (self));
+ g_return_if_fail (MM_GDBUS_IS_MODEM (self));
- result = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- mm_modem_set_allowed_bands);
- mm_gdbus_modem_call_set_allowed_bands (
- mm_gdbus_object_get_modem (MM_GDBUS_OBJECT (self)), /* unref later */
- bands,
- cancellable,
- (GAsyncReadyCallback)common_set_allowed_bands_ready,
- result);
+ mm_gdbus_modem_call_set_allowed_bands (self,
+ bands,
+ cancellable,
+ callback,
+ user_data);
}
gboolean
@@ -1207,11 +1124,12 @@ mm_modem_set_allowed_bands_sync (MMModem *self,
GCancellable *cancellable,
GError **error)
{
- return (mm_gdbus_modem_call_set_allowed_bands_sync (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self)),
- bands,
- cancellable,
- error));
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+
+ return mm_gdbus_modem_call_set_allowed_bands_sync (self,
+ bands,
+ cancellable,
+ error);
}
static void
@@ -1241,7 +1159,7 @@ mm_modem_get_sim (MMModem *self,
GSimpleAsyncResult *result;
const gchar *sim_path;
- g_return_if_fail (MM_GDBUS_IS_OBJECT (self));
+ g_return_if_fail (MM_GDBUS_IS_MODEM (self));
result = g_simple_async_result_new (G_OBJECT (self),
callback,
@@ -1257,9 +1175,8 @@ mm_modem_get_sim (MMModem *self,
}
mm_gdbus_sim_proxy_new (
- g_dbus_object_proxy_get_connection (
- G_DBUS_OBJECT_PROXY (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self)))),
+ g_dbus_proxy_get_connection (
+ G_DBUS_PROXY (self)),
G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
MM_DBUS_SERVICE,
sim_path,
@@ -1273,7 +1190,7 @@ mm_modem_get_sim_finish (MMModem *self,
GAsyncResult *res,
GError **error)
{
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error))
return NULL;
@@ -1288,16 +1205,15 @@ mm_modem_get_sim_sync (MMModem *self,
{
const gchar *sim_path;
- g_return_val_if_fail (MM_GDBUS_IS_OBJECT (self), NULL);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
sim_path = mm_modem_get_sim_path (self);
if (!sim_path)
return NULL;
return (mm_gdbus_sim_proxy_new_sync (
- g_dbus_object_proxy_get_connection (
- G_DBUS_OBJECT_PROXY (
- mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (self)))),
+ g_dbus_proxy_get_connection (
+ G_DBUS_PROXY (self)),
G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
MM_DBUS_SERVICE,
sim_path,
diff --git a/libmm-glib/mm-modem.h b/libmm-glib/mm-modem.h
index 56db03cd..33a9d4a5 100644
--- a/libmm-glib/mm-modem.h
+++ b/libmm-glib/mm-modem.h
@@ -30,12 +30,14 @@
G_BEGIN_DECLS
-typedef MmGdbusObject MMModem;
-#define MM_TYPE_MODEM(o) MM_GDBUS_TYPE_OBJECT (o)
-#define MM_MODEM(o) MM_GDBUS_OBJECT(o)
-#define MM_IS_MODEM(o) MM_GDBUS_IS_OBJECT(o)
+typedef MmGdbusModem MMModem;
+#define MM_TYPE_MODEM(o) MM_GDBUS_TYPE_MODEM (o)
+#define MM_MODEM(o) MM_GDBUS_MODEM(o)
+#define MM_IS_MODEM(o) MM_GDBUS_IS_MODEM(o)
+
+const gchar *mm_modem_get_path (MMModem *self);
+gchar *mm_modem_dup_path (MMModem *self);
-const gchar *mm_modem_get_path (MMModem *self);
const gchar *mm_modem_get_sim_path (MMModem *self);
gchar *mm_modem_dup_sim_path (MMModem *self);
MMModemCapability mm_modem_get_modem_capabilities (MMModem *self);
diff --git a/libmm-glib/mm-object.c b/libmm-glib/mm-object.c
new file mode 100644
index 00000000..5f059c4c
--- /dev/null
+++ b/libmm-glib/mm-object.c
@@ -0,0 +1,129 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * libmm -- Access modem status & information from glib applications
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2011 Aleksander Morgado <aleksander@gnu.org>
+ */
+
+#include "mm-object.h"
+
+/**
+ * mm_object_get_path:
+ * @self: A #MMObject.
+ *
+ * Gets the DBus path of the #MMObject object.
+ *
+ * Returns: (transfer none): The DBus path of the #MMObject object.
+ */
+const gchar *
+mm_object_get_path (MMObject *self)
+{
+ g_return_val_if_fail (G_IS_DBUS_OBJECT (self), NULL);
+
+ return g_dbus_object_get_object_path (G_DBUS_OBJECT (self));
+}
+
+/**
+ * mm_object_dup_path:
+ * @self: A #MMObject.
+ *
+ * Gets a copy of the DBus path of the #MMObject object.
+ *
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ */
+gchar *
+mm_object_dup_path (MMObject *self)
+{
+ gchar *value;
+
+ g_return_val_if_fail (G_IS_DBUS_OBJECT_PROXY (self), NULL);
+
+ g_object_get (G_OBJECT (self),
+ "g-object-path", &value,
+ NULL);
+
+ return value;
+}
+
+/**
+ * mm_object_get_modem:
+ * @object: A #MMModem
+ *
+ * Gets the #MMModem instance for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-ModemManager1-Modem.top_of_page">org.freedesktop.ModemManager1.Modem</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #MMModem that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+MMModem *
+mm_object_get_modem (MMObject *object)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_OBJECT (object), NULL);
+
+ return mm_gdbus_object_get_modem (object);
+}
+
+/**
+ * mm_object_get_modem_3gpp:
+ * @object: A #MMObject.
+ *
+ * Gets the #MMModem3gpp instance for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-ModemManager1-Modem-Modem3gpp.top_of_page">org.freedesktop.ModemManager1.Modem.Modem3gpp</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #MMModem3gpp that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+MMModem3gpp *
+mm_object_get_modem_3gpp (MMObject *object)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_OBJECT (object), NULL);
+
+ return mm_gdbus_object_get_modem3gpp (object);
+}
+
+/**
+ * mm_object_peek_modem: (skip)
+ * @object: A #MMObject.
+ *
+ * Like mm_object_get_modem() 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 #MMManager is running.</warning>
+ *
+ * Returns: (transfer none): A #MMModem or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+MMModem *
+mm_object_peek_modem (MMObject *object)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_OBJECT (object), NULL);
+
+ return mm_gdbus_object_peek_modem (object);
+}
+
+/**
+ * mm_object_peek_modem_3gpp: (skip)
+ * @object: A #MMObject.
+ *
+ * Like mm_object_get_modem_3gpp() 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 #MMManager is running.</warning>
+ *
+ * Returns: (transfer none): A #MMModem3gpp or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+MMModem3gpp *
+mm_object_peek_modem_3gpp (MMObject *object)
+{
+ g_return_val_if_fail (MM_GDBUS_IS_OBJECT (object), NULL);
+
+ return mm_gdbus_object_peek_modem3gpp (object);
+}
diff --git a/libmm-glib/mm-object.h b/libmm-glib/mm-object.h
new file mode 100644
index 00000000..8d8271c1
--- /dev/null
+++ b/libmm-glib/mm-object.h
@@ -0,0 +1,50 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * libmm -- Access modem status & information from glib applications
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2011 Aleksander Morgado <aleksander@gnu.org>
+ */
+
+#ifndef _MM_OBJECT_H_
+#define _MM_OBJECT_H_
+
+#include <ModemManager.h>
+#include <mm-gdbus-modem.h>
+
+#include "mm-modem.h"
+#include "mm-modem-3gpp.h"
+
+G_BEGIN_DECLS
+
+typedef MmGdbusObject MMObject;
+#define MM_TYPE_OBJECT(o) MM_GDBUS_TYPE_OBJECT (o)
+#define MM_OBJECT(o) MM_GDBUS_OBJECT(o)
+#define MM_IS_OBJECT(o) MM_GDBUS_IS_OBJECT(o)
+
+const gchar *mm_object_get_path (MMObject *self);
+gchar *mm_object_dup_path (MMObject *self);
+
+MMModem *mm_object_get_modem (MMObject *object);
+MMModem3gpp *mm_object_get_modem_3gpp (MMObject *object);
+
+MMModem *mm_object_peek_modem (MMObject *object);
+MMModem3gpp *mm_object_peek_modem_3gpp (MMObject *object);
+
+G_END_DECLS
+
+#endif /* _MM_OBJECT_H_ */