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.
This commit is contained in:
@@ -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" \
|
||||
|
@@ -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
|
||||
|
||||
|
31
libmm-glib/Makefile.am
Normal file
31
libmm-glib/Makefile.am
Normal file
@@ -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
|
28
libmm-glib/libmm-glib.h
Normal file
28
libmm-glib/libmm-glib.h
Normal file
@@ -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_ */
|
511
libmm-glib/mm-manager.c
Normal file
511
libmm-glib/mm-manager.c
Normal file
@@ -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;
|
||||
}
|
95
libmm-glib/mm-manager.h
Normal file
95
libmm-glib/mm-manager.h
Normal file
@@ -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_ */
|
Reference in New Issue
Block a user