aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2011-10-26 21:08:21 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-03-15 14:14:25 +0100
commitba0e4ca88ef947df11fe2a095cc16671402fdf93 (patch)
tree4e19d9a4137ac8b9db8ce0e50e6961b175196e65
parentc58db4e015c1d6aeccccb167f7f2f68c211a3b86 (diff)
libmm-glib: setup build of the libmm-glib library
The library will contain a small layer of code on top of the proxies and object manager client generated by gdbus-codegen. Therefore, the headers auto-generated from the DBus introspection XMLs need to be distributed along with the libmm-glib specific headers.
-rw-r--r--Makefile.am3
-rw-r--r--configure.ac8
-rw-r--r--libmm-glib/Makefile.am31
-rw-r--r--libmm-glib/libmm-glib.h28
-rw-r--r--libmm-glib/mm-manager.c511
-rw-r--r--libmm-glib/mm-manager.h95
6 files changed, 675 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am
index eccb20eb..e55d3431 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,5 @@
-SUBDIRS = . marshallers build-aux data include libmm-common libqcdm libwmc src plugins introspection po test docs
+
+SUBDIRS = . marshallers build-aux data include libmm-common libqcdm libwmc src plugins introspection libmm-glib po test docs
DISTCHECK_CONFIGURE_FLAGS = \
--with-udev-base-dir="$$dc_install_base" \
diff --git a/configure.ac b/configure.ac
index 036b6461..60f7d105 100644
--- a/configure.ac
+++ b/configure.ac
@@ -60,6 +60,13 @@ PKG_CHECK_MODULES(MM,
AC_SUBST(MM_CFLAGS)
AC_SUBST(MM_LIBS)
+PKG_CHECK_MODULES(LIBMM,
+ glib-2.0 >= 2.30
+ gobject-2.0
+ gio-2.0)
+AC_SUBST(LIBMM_CFLAGS)
+AC_SUBST(LIBMM_LIBS)
+
PKG_CHECK_MODULES(GUDEV, gudev-1.0)
AC_SUBST(GUDEV_CFLAGS)
AC_SUBST(GUDEV_LIBS)
@@ -195,6 +202,7 @@ docs/man/modem-manager.8
docs/reference/Makefile
docs/reference/api/Makefile
docs/reference/api/version.xml
+libmm-glib/Makefile
])
AC_OUTPUT
diff --git a/libmm-glib/Makefile.am b/libmm-glib/Makefile.am
new file mode 100644
index 00000000..636e1db9
--- /dev/null
+++ b/libmm-glib/Makefile.am
@@ -0,0 +1,31 @@
+
+lib_LTLIBRARIES = libmm-glib.la
+
+libmm_glib_la_CPPFLAGS = \
+ $(LIBMM_CFLAGS) \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -I${top_srcdir}/libmm-common \
+ -I${top_builddir}/libmm-common
+
+libmm_glib_la_SOURCES = \
+ libmm-glib.h \
+ mm-manager.h \
+ mm-manager.c
+
+libmm_glib_la_LIBADD = \
+ $(top_builddir)/libmm-common/libmm-common.la \
+ $(LIBMM_LIBS)
+
+includedir = @includedir@/libmm-glib
+include_HEADERS = \
+ ${top_builddir}/libmm-common/mm-enums-types.h \
+ ${top_builddir}/libmm-common/mm-errors-types.h \
+ ${top_builddir}/libmm-common/mm-gdbus-manager.h \
+ ${top_builddir}/libmm-common/mm-gdbus-sim.h \
+ ${top_builddir}/libmm-common/mm-gdbus-modem.h \
+ ${top_builddir}/libmm-common/mm-gdbus-sms.h \
+ ${top_builddir}/libmm-common/mm-gdbus-bearer.h \
+ libmm-glib.h \
+ mm-manager.h
diff --git a/libmm-glib/libmm-glib.h b/libmm-glib/libmm-glib.h
new file mode 100644
index 00000000..754b6044
--- /dev/null
+++ b/libmm-glib/libmm-glib.h
@@ -0,0 +1,28 @@
+/* -*- 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 Google, Inc.
+ */
+
+#ifndef _LIBMM_GLIB_H_
+#define _LIBMM_GLIB_H_
+
+#include <mm-manager.h>
+
+#endif /* _LIBMM_GLIB_H_ */
diff --git a/libmm-glib/mm-manager.c b/libmm-glib/mm-manager.c
new file mode 100644
index 00000000..3e5c6d02
--- /dev/null
+++ b/libmm-glib/mm-manager.c
@@ -0,0 +1,511 @@
+/* -*- 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 Google, Inc.
+ *
+ * Author: Aleksander Morgado <aleksander@lanedo.com>
+ */
+
+#include "ModemManager.h"
+#include <mm-gdbus-manager.h>
+#include "mm-manager.h"
+
+static void initable_iface_init (GInitableIface *iface);
+static void async_initable_iface_init (GAsyncInitableIface *iface);
+
+static GInitableIface *initable_parent_iface;
+static GAsyncInitableIface *async_initable_parent_iface;
+
+G_DEFINE_TYPE_EXTENDED (MMManager, mm_manager, MM_GDBUS_TYPE_OBJECT_MANAGER_CLIENT, 0,
+ G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init)
+ G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init));
+
+struct _MMManagerPrivate {
+ /* The proxy for the Manager interface */
+ MmGdbusOrgFreedesktopModemManager1 *manager_iface_proxy;
+};
+
+/**
+ * mm_manager_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @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 #MMManager.
+ *
+ * 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_manager_new_finish() to get the result of the operation.
+ *
+ * See mm_manager_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+mm_manager_new (GDBusConnection *connection,
+ GDBusObjectManagerClientFlags flags,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (MM_TYPE_MANAGER,
+ G_PRIORITY_DEFAULT,
+ cancellable,
+ callback,
+ user_data,
+ "name", MM_DBUS_SERVICE,
+ "object-path", MM_DBUS_PATH,
+ "flags", flags,
+ "connection", connection,
+ "get-proxy-type-func", mm_gdbus_object_manager_client_get_proxy_type,
+ NULL);
+}
+
+/**
+ * mm_manager_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with mm_manager_new().
+ *
+ * Returns: (transfer full) (type MMManager): The constructed object manager client or %NULL if @error is set.
+ */
+MMManager *
+mm_manager_new_finish (GAsyncResult *res,
+ GError **error)
+{
+ return MM_MANAGER (mm_gdbus_object_manager_client_new_finish (res, error));
+}
+
+/**
+ * mm_manager_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a #MMManager.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See mm_manager_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type MMManager): The constructed object manager client or %NULL if @error is set.
+ */
+MMManager *
+mm_manager_new_sync (GDBusConnection *connection,
+ GDBusObjectManagerClientFlags flags,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+
+ ret = g_initable_new (MM_TYPE_MANAGER,
+ cancellable,
+ error,
+ "name", MM_DBUS_SERVICE,
+ "object-path", MM_DBUS_PATH,
+ "flags", flags,
+ "connection", connection,
+ "get-proxy-type-func", mm_gdbus_object_manager_client_get_proxy_type,
+ NULL);
+
+ return (ret ? MM_MANAGER (ret) : NULL);
+}
+
+static void
+set_logging_ready (MmGdbusOrgFreedesktopModemManager1 *manager_iface_proxy,
+ GAsyncResult *res,
+ GSimpleAsyncResult *simple)
+{
+ GError *error = NULL;
+
+ if (mm_gdbus_org_freedesktop_modem_manager1_call_set_logging_finish (
+ manager_iface_proxy,
+ res,
+ &error))
+ g_simple_async_result_take_error (simple, error);
+ else
+ g_simple_async_result_set_op_res_gboolean (simple, TRUE);
+
+ g_simple_async_result_complete (simple);
+ g_object_unref (simple);
+}
+
+void
+mm_manager_set_logging (MMManager *manager,
+ const gchar *level,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GSimpleAsyncResult *result;
+
+ result = g_simple_async_result_new (G_OBJECT (manager),
+ callback,
+ user_data,
+ mm_manager_set_logging);
+
+ mm_gdbus_org_freedesktop_modem_manager1_call_set_logging (
+ manager->priv->manager_iface_proxy,
+ level,
+ cancellable,
+ (GAsyncReadyCallback)set_logging_ready,
+ result);
+}
+
+gboolean
+mm_manager_set_logging_finish (MMManager *manager,
+ GAsyncResult *res,
+ GError **error)
+{
+ if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res),
+ error))
+ return FALSE;
+
+ return TRUE;
+}
+
+gboolean
+mm_manager_set_logging_sync (MMManager *manager,
+ const gchar *level,
+ GCancellable *cancellable,
+ GError **error)
+{
+ return (mm_gdbus_org_freedesktop_modem_manager1_call_set_logging_sync (
+ manager->priv->manager_iface_proxy,
+ level,
+ cancellable,
+ error));
+}
+
+static void
+scan_devices_ready (MmGdbusOrgFreedesktopModemManager1 *manager_iface_proxy,
+ GAsyncResult *res,
+ GSimpleAsyncResult *simple)
+{
+ GError *error = NULL;
+
+ if (mm_gdbus_org_freedesktop_modem_manager1_call_scan_devices_finish (
+ manager_iface_proxy,
+ res,
+ &error))
+ g_simple_async_result_take_error (simple, error);
+ else
+ g_simple_async_result_set_op_res_gboolean (simple, TRUE);
+
+ g_simple_async_result_complete (simple);
+ g_object_unref (simple);
+}
+
+/**
+ * mm_manager_scan_devices:
+ * @manager: A #MMManager.
+ * @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.
+ *
+ * Requests to scan looking for devices.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-ModemManager1.ScanDevices">ScanDevices()</link>
+ * D-Bus method on @manager. 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_manager_scan_devices_finish() to get the result of the operation.
+ *
+ * See mm_manager_scan_devices_sync() for the synchronous, blocking version of this method.
+ */
+void
+mm_manager_scan_devices (MMManager *manager,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GSimpleAsyncResult *result;
+
+ result = g_simple_async_result_new (G_OBJECT (manager),
+ callback,
+ user_data,
+ mm_manager_scan_devices);
+
+ mm_gdbus_org_freedesktop_modem_manager1_call_scan_devices (
+ manager->priv->manager_iface_proxy,
+ cancellable,
+ (GAsyncReadyCallback)scan_devices_ready,
+ result);
+}
+
+/**
+ * mm_manager_scan_devices_finish:
+ * @manager: A #MMManager.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_scan_devices().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with mm_manager_scan_devices().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+mm_manager_scan_devices_finish (MMManager *manager,
+ GAsyncResult *res,
+ GError **error)
+{
+ if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res),
+ error))
+ return FALSE;
+
+ return TRUE;
+}
+
+/**
+ * mm_manager_scan_devices_sync:
+ * @manager: A #MMManager.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Requests to scan looking for devices.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-ModemManager1.ScanDevices">ScanDevices()</link>
+ * D-Bus method on @manager. The calling thread is blocked until a reply is received.
+ *
+ * See mm_gdbus_org_freedesktop_modem_manager1_call_scan_devices() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+mm_manager_scan_devices_sync (MMManager *manager,
+ GCancellable *cancellable,
+ GError **error)
+{
+ return (mm_gdbus_org_freedesktop_modem_manager1_call_scan_devices_sync (
+ manager->priv->manager_iface_proxy,
+ cancellable,
+ error));
+}
+
+static gboolean
+initable_init_sync (GInitable *initable,
+ GCancellable *cancellable,
+ GError **error)
+{
+ MMManagerPrivate *priv = MM_MANAGER (initable)->priv;
+ GError *inner_error = NULL;
+ gchar *name = NULL;
+ gchar *object_path = NULL;
+ GDBusObjectManagerClientFlags flags = G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE;
+ GDBusConnection *connection = NULL;
+
+ /* Chain up parent's initable callback before calling child's one */
+ if (!initable_parent_iface->init (initable, cancellable, &inner_error)) {
+ g_propagate_error (error, inner_error);
+ return FALSE;
+ }
+
+ /* Get the Manager proxy created synchronously now */
+ g_object_get (initable,
+ "name", &name,
+ "object-path", &object_path,
+ "flags", &flags,
+ "connection", &connection,
+ NULL);
+ priv->manager_iface_proxy =
+ mm_gdbus_org_freedesktop_modem_manager1_proxy_new_sync (connection,
+ flags,
+ name,
+ object_path,
+ cancellable,
+ error);
+ g_object_unref (connection);
+ g_free (object_path);
+ g_free (name);
+
+ if (!priv->manager_iface_proxy) {
+ g_propagate_error (error, inner_error);
+ return FALSE;
+ }
+
+ /* All good */
+ return TRUE;
+}
+
+typedef struct {
+ GSimpleAsyncResult *result;
+ int io_priority;
+ GCancellable *cancellable;
+ MMManager *manager;
+} InitAsyncContext;
+
+static void
+init_async_context_free (InitAsyncContext *ctx)
+{
+ g_object_unref (ctx->manager);
+ g_object_unref (ctx->result);
+ g_object_unref (ctx->cancellable);
+ g_free (ctx);
+}
+
+static gboolean
+initable_init_finish (GAsyncInitable *initable,
+ GAsyncResult *result,
+ GError **error)
+{
+ if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result),
+ error))
+ return FALSE;
+
+ return TRUE;
+}
+
+static void
+initable_init_async_manager_proxy_ready (GObject *source,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ GError *inner_error = NULL;
+ InitAsyncContext *ctx = user_data;
+ MMManagerPrivate *priv = ctx->manager->priv;
+
+ priv->manager_iface_proxy =
+ mm_gdbus_org_freedesktop_modem_manager1_proxy_new_finish (res,
+ &inner_error);
+ if (!priv->manager_iface_proxy)
+ g_simple_async_result_take_error (ctx->result, inner_error);
+ else
+ g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
+
+ g_simple_async_result_complete (ctx->result);
+ init_async_context_free (ctx);
+}
+
+static void
+initable_init_async_parent_ready (GObject *source,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ GError *inner_error = NULL;
+ InitAsyncContext *ctx = user_data;
+ gchar *name = NULL;
+ gchar *object_path = NULL;
+ GDBusObjectManagerClientFlags flags = G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE;
+ GDBusConnection *connection = NULL;
+
+ /* Parent init ready, check it */
+ if (!async_initable_parent_iface->init_finish (G_ASYNC_INITABLE (source),
+ res,
+ &inner_error)) {
+ g_simple_async_result_take_error (ctx->result, inner_error);
+ g_simple_async_result_complete (ctx->result);
+ init_async_context_free (ctx);
+ return;
+ }
+
+ /* Get the Manager proxy created asynchronously now */
+ g_object_get (ctx->manager,
+ "name", &name,
+ "object-path", &object_path,
+ "flags", &flags,
+ "connection", &connection,
+ NULL);
+ mm_gdbus_org_freedesktop_modem_manager1_proxy_new (connection,
+ flags,
+ name,
+ object_path,
+ ctx->cancellable,
+ initable_init_async_manager_proxy_ready,
+ ctx);
+ g_object_unref (connection);
+ g_free (object_path);
+ g_free (name);
+}
+
+static void
+initable_init_async (GAsyncInitable *initable,
+ int io_priority,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ InitAsyncContext *ctx;
+
+ ctx = g_new (InitAsyncContext, 1);
+ ctx->manager = g_object_ref (initable);
+ ctx->result = g_simple_async_result_new (G_OBJECT (initable),
+ callback,
+ user_data,
+ initable_init_async);
+ ctx->cancellable = (cancellable ?
+ g_object_ref (cancellable) :
+ NULL);
+ ctx->io_priority = io_priority;
+
+ /* Chain up parent's initable callback before calling child's one */
+ async_initable_parent_iface->init_async (initable,
+ io_priority,
+ cancellable,
+ initable_init_async_parent_ready,
+ ctx);
+}
+
+static void
+mm_manager_init (MMManager *manager)
+{
+ /* Setup private data */
+ manager->priv = G_TYPE_INSTANCE_GET_PRIVATE ((manager),
+ MM_TYPE_MANAGER,
+ MMManagerPrivate);
+}
+
+static void
+finalize (GObject *object)
+{
+ MMManagerPrivate *priv = MM_MANAGER (object)->priv;
+
+ if (priv->manager_iface_proxy)
+ g_object_unref (priv->manager_iface_proxy);
+
+ G_OBJECT_CLASS (mm_manager_parent_class)->finalize (object);
+}
+
+static void
+initable_iface_init (GInitableIface *iface)
+{
+ initable_parent_iface = g_type_interface_peek_parent (iface);
+ iface->init = initable_init_sync;
+}
+
+static void
+async_initable_iface_init (GAsyncInitableIface *iface)
+{
+ async_initable_parent_iface = g_type_interface_peek_parent (iface);
+ iface->init_async = initable_init_async;
+ iface->init_finish = initable_init_finish;
+}
+
+static void
+mm_manager_class_init (MMManagerClass *manager_class)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (manager_class);
+
+ g_type_class_add_private (object_class, sizeof (MMManagerPrivate));
+
+ /* Virtual methods */
+ object_class->finalize = finalize;
+}
diff --git a/libmm-glib/mm-manager.h b/libmm-glib/mm-manager.h
new file mode 100644
index 00000000..0cbf5ea6
--- /dev/null
+++ b/libmm-glib/mm-manager.h
@@ -0,0 +1,95 @@
+/* -*- 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 Google, Inc.
+ *
+ * Author: Aleksander Morgado <aleksander@lanedo.com>
+ */
+
+#ifndef _MM_MANAGER_H_
+#define _MM_MANAGER_H_
+
+G_BEGIN_DECLS
+
+#include "mm-gdbus-modem.h"
+
+#define MM_TYPE_MANAGER (mm_manager_get_type ())
+#define MM_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_MANAGER, MMManager))
+#define MM_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MM_TYPE_MANAGER, MMManagerClass))
+#define MM_IS_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_MANAGER))
+#define MM_IS_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), MM_TYPE_MANAGER))
+#define MM_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_MANAGER, MMManagerClass))
+
+typedef struct _MMManagerPrivate MMManagerPrivate;
+
+typedef struct {
+ /*< private >*/
+ MmGdbusObjectManagerClient parent;
+ MMManagerPrivate *priv;
+} MMManager;
+
+typedef struct {
+ /*< private >*/
+ MmGdbusObjectManagerClientClass parent;
+} MMManagerClass;
+
+GType mm_manager_get_type (void);
+
+void mm_manager_new (
+ GDBusConnection *connection,
+ GDBusObjectManagerClientFlags flags,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+MMManager *mm_manager_new_finish (
+ GAsyncResult *res,
+ GError **error);
+MMManager *mm_manager_new_sync (
+ GDBusConnection *connection,
+ GDBusObjectManagerClientFlags flags,
+ GCancellable *cancellable,
+ GError **error);
+
+void mm_manager_set_logging (MMManager *manager,
+ const gchar *level,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean mm_manager_set_logging_finish (MMManager *manager,
+ GAsyncResult *res,
+ GError **error);
+gboolean mm_manager_set_logging_sync (MMManager *manager,
+ const gchar *level,
+ GCancellable *cancellable,
+ GError **error);
+
+void mm_manager_scan_devices (MMManager *manager,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean mm_manager_scan_devices_finish (MMManager *manager,
+ GAsyncResult *res,
+ GError **error);
+gboolean mm_manager_scan_devices_sync (MMManager *manager,
+ GCancellable *cancellable,
+ GError **error);
+
+G_END_DECLS
+
+#endif /* _MM_MANAGER_H_ */