Commit c84a0972 authored by Zeeshan Ali's avatar Zeeshan Ali

Split-out ModemManager code

GClueModem is not an interface and the new GClueModemManager class now
implements this interface using ModemManager. This is pretty useless on
its own right now but its intended to make it easy to add alternative
Modem source(s), e.g ofono-based.
parent b3102efe
......@@ -95,7 +95,10 @@ libgeoclue_la_SOURCES = \
$(NULL)
if BUILD_MODEM_SOURCE
libgeoclue_la_SOURCES += gclue-modem.c gclue-modem.h
libgeoclue_la_SOURCES += gclue-modem.c \
gclue-modem.h \
gclue-modem-manager.c \
gclue-modem-manager.h
endif
if BUILD_3G_SOURCE
......
......@@ -24,7 +24,7 @@
#include <libsoup/soup.h>
#include <string.h>
#include "gclue-3g.h"
#include "gclue-modem.h"
#include "gclue-modem-manager.h"
#include "geocode-glib/geocode-location.h"
#include "gclue-mozilla.h"
......@@ -157,7 +157,7 @@ gclue_3g_init (GClue3G *source)
priv->cancellable = g_cancellable_new ();
priv->modem = gclue_modem_get_singleton ();
priv->modem = gclue_modem_manager_get_singleton ();
priv->threeg_notify_id =
g_signal_connect (priv->modem,
"notify::is-3g-available",
......
......@@ -23,7 +23,7 @@
#include <glib.h>
#include <string.h>
#include "gclue-modem-gps.h"
#include "gclue-modem.h"
#include "gclue-modem-manager.h"
#include "geocode-glib/geocode-location.h"
/**
......@@ -146,7 +146,7 @@ gclue_modem_gps_init (GClueModemGPS *source)
priv->cancellable = g_cancellable_new ();
priv->modem = gclue_modem_get_singleton ();
priv->modem = gclue_modem_manager_get_singleton ();
priv->gps_notify_id =
g_signal_connect (priv->modem,
"notify::is-gps-available",
......
This diff is collapsed.
/* vim: set et ts=8 sw=8: */
/*
* Copyright (C) 2014 Red Hat, Inc.
*
* Geoclue is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* Geoclue 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 General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along
* with Geoclue; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* Authors: Zeeshan Ali (Khattak) <zeeshanak@gnome.org>
*/
#ifndef GCLUE_MODEM_MANAGER_H
#define GCLUE_MODEM_MANAGER_H
#include <gio/gio.h>
#include "gclue-modem.h"
G_BEGIN_DECLS
GType gclue_modem_manager_get_type (void) G_GNUC_CONST;
#define GCLUE_TYPE_MODEM_MANAGER (gclue_modem_manager_get_type ())
#define GCLUE_MODEM_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCLUE_TYPE_MODEM_MANAGER, GClueModemManager))
#define GCLUE_IS_MODEM_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCLUE_TYPE_MODEM_MANAGER))
#define GCLUE_MODEM_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCLUE_TYPE_MODEM_MANAGER, GClueModemManagerClass))
#define GCLUE_IS_MODEM_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCLUE_TYPE_MODEM_MANAGER))
#define GCLUE_MODEM_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCLUE_TYPE_MODEM_MANAGER, GClueModemManagerClass))
/**
* GClueModemManager:
*
* All the fields in the #GClueModemManager structure are private and should never be accessed directly.
**/
typedef struct _GClueModemManager GClueModemManager;
typedef struct _GClueModemManagerClass GClueModemManagerClass;
typedef struct _GClueModemManagerPrivate GClueModemManagerPrivate;
struct _GClueModemManager {
/* <private> */
GObject parent_instance;
GClueModemManagerPrivate *priv;
};
/**
* GClueModemManagerClass:
*
* All the fields in the #GClueModemManagerClass structure are private and should never be accessed directly.
**/
struct _GClueModemManagerClass {
/* <private> */
GObjectClass parent_class;
};
GClueModem* gclue_modem_manager_get_singleton (void);
G_END_DECLS
#endif /* GCLUE_MODEM_MANAGER_H */
This diff is collapsed.
......@@ -28,61 +28,64 @@ G_BEGIN_DECLS
GType gclue_modem_get_type (void) G_GNUC_CONST;
#define GCLUE_TYPE_MODEM (gclue_modem_get_type ())
#define GCLUE_MODEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCLUE_TYPE_MODEM, GClueModem))
#define GCLUE_IS_MODEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCLUE_TYPE_MODEM))
#define GCLUE_MODEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCLUE_TYPE_MODEM, GClueModemClass))
#define GCLUE_IS_MODEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCLUE_TYPE_MODEM))
#define GCLUE_MODEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCLUE_TYPE_MODEM, GClueModemClass))
#define GCLUE_TYPE_MODEM (gclue_modem_get_type ())
#define GCLUE_MODEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCLUE_TYPE_MODEM, GClueModem))
#define GCLUE_IS_MODEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCLUE_TYPE_MODEM))
#define GCLUE_MODEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCLUE_TYPE_MODEM, GClueModemInterface))
/**
* GClueModem:
*
* All the fields in the #GClueModem structure are private and should never be accessed directly.
**/
typedef struct _GClueModem GClueModem;
typedef struct _GClueModemClass GClueModemClass;
typedef struct _GClueModemPrivate GClueModemPrivate;
typedef struct _GClueModem GClueModem;
typedef struct _GClueModemInterface GClueModemInterface;
struct _GClueModem {
struct _GClueModemInterface {
/* <private> */
GObject parent_instance;
GClueModemPrivate *priv;
};
GTypeInterface parent_iface;
/**
* GClueModemClass:
*
* All the fields in the #GClueModemClass structure are private and should never be accessed directly.
**/
struct _GClueModemClass {
/* <private> */
GObjectClass parent_class;
gboolean (*get_is_3g_available) (GClueModem *modem);
gboolean (*get_is_gps_available) (GClueModem *modem);
void (*enable_3g) (GClueModem *modem,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean (*enable_3g_finish) (GClueModem *modem,
GAsyncResult *result,
GError **error);
void (*enable_gps) (GClueModem *modem,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean (*enable_gps_finish) (GClueModem *modem,
GAsyncResult *result,
GError **error);
gboolean (*disable_3g) (GClueModem *modem,
GCancellable *cancellable,
GError **error);
gboolean (*disable_gps) (GClueModem *modem,
GCancellable *cancellable,
GError **error);
};
GClueModem * gclue_modem_get_singleton (void);
gboolean gclue_modem_get_is_3g_available (GClueModem *modem);
gboolean gclue_modem_get_is_gps_available (GClueModem *modem);
void gclue_modem_enable_3g (GClueModem *modem,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean gclue_modem_enable_3g_finish (GClueModem *modem,
GAsyncResult *result,
GError **error);
void gclue_modem_enable_gps (GClueModem *modem,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean gclue_modem_enable_gps_finish (GClueModem *modem,
GAsyncResult *result,
GError **error);
gboolean gclue_modem_disable_3g (GClueModem *modem,
GCancellable *cancellable,
GError **error);
gboolean gclue_modem_disable_gps (GClueModem *modem,
GCancellable *cancellable,
GError **error);
void gclue_modem_enable_3g (GClueModem *modem,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean gclue_modem_enable_3g_finish (GClueModem *modem,
GAsyncResult *result,
GError **error);
void gclue_modem_enable_gps (GClueModem *modem,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean gclue_modem_enable_gps_finish (GClueModem *modem,
GAsyncResult *result,
GError **error);
gboolean gclue_modem_disable_3g (GClueModem *modem,
GCancellable *cancellable,
GError **error);
gboolean gclue_modem_disable_gps (GClueModem *modem,
GCancellable *cancellable,
GError **error);
G_END_DECLS
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment