aboutsummaryrefslogtreecommitdiff
path: root/src/mm-plugin.h
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-07-10 11:15:23 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-08-06 20:06:45 +0200
commite5e46f489e9d89bdecb4c4948b0d9627e33555cc (patch)
tree4b8e1b316787b0a7e1346a1bd6930c293639171f /src/mm-plugin.h
parent7e9d3e4b685f0e92979af2f595be6cd336b5dbd6 (diff)
core: merge `MMPluginBase' and `MMPlugin'
There's no real point in maintaining a separate `MMPlugin' interface, as all the plugins will inherit from `MMPluginBase', so just merge them and simplify everything.
Diffstat (limited to 'src/mm-plugin.h')
-rw-r--r--src/mm-plugin.h137
1 files changed, 68 insertions, 69 deletions
diff --git a/src/mm-plugin.h b/src/mm-plugin.h
index d31be1e4..89eeca67 100644
--- a/src/mm-plugin.h
+++ b/src/mm-plugin.h
@@ -11,30 +11,46 @@
* GNU General Public License for more details:
*
* Copyright (C) 2008 Novell, Inc.
- * Copyright (C) 2009 Red Hat, Inc.
+ * Copyright (C) 2009 - 2012 Red Hat, Inc.
+ * Copyright (C) 2012 Google, Inc.
*/
#ifndef MM_PLUGIN_H
#define MM_PLUGIN_H
+#include <glib.h>
#include <glib-object.h>
-#include <gio/gio.h>
+#include <gudev/gudev.h>
#include "mm-base-modem.h"
+#include "mm-port.h"
+#include "mm-port-probe.h"
#define MM_PLUGIN_GENERIC_NAME "Generic"
-
#define MM_PLUGIN_MAJOR_VERSION 4
#define MM_PLUGIN_MINOR_VERSION 0
-#define MM_TYPE_PLUGIN (mm_plugin_get_type ())
-#define MM_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_PLUGIN, MMPlugin))
-#define MM_IS_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_PLUGIN))
-#define MM_PLUGIN_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MM_TYPE_PLUGIN, MMPlugin))
-
-typedef struct _MMPlugin MMPlugin;
-
-typedef MMPlugin *(*MMPluginCreateFunc) (void);
+#define MM_TYPE_PLUGIN (mm_plugin_get_type ())
+#define MM_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_PLUGIN, MMPlugin))
+#define MM_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MM_TYPE_PLUGIN, MMPluginClass))
+#define MM_IS_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_PLUGIN))
+#define MM_IS_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MM_TYPE_PLUGIN))
+#define MM_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_PLUGIN, MMPluginClass))
+
+#define MM_PLUGIN_NAME "name"
+#define MM_PLUGIN_ALLOWED_SUBSYSTEMS "allowed-subsystems"
+#define MM_PLUGIN_ALLOWED_DRIVERS "allowed-drivers"
+#define MM_PLUGIN_ALLOWED_VENDOR_IDS "allowed-vendor-ids"
+#define MM_PLUGIN_ALLOWED_PRODUCT_IDS "allowed-product-ids"
+#define MM_PLUGIN_ALLOWED_VENDOR_STRINGS "allowed-vendor-strings"
+#define MM_PLUGIN_ALLOWED_PRODUCT_STRINGS "allowed-product-strings"
+#define MM_PLUGIN_ALLOWED_UDEV_TAGS "allowed-udev-tags"
+#define MM_PLUGIN_ALLOWED_AT "allowed-at"
+#define MM_PLUGIN_ALLOWED_SINGLE_AT "allowed-single-at"
+#define MM_PLUGIN_ALLOWED_QCDM "allowed-qcdm"
+#define MM_PLUGIN_CUSTOM_INIT "custom-init"
+#define MM_PLUGIN_SEND_DELAY "send-delay"
+#define MM_PLUGIN_SORT_LAST "sort-last"
typedef enum {
MM_PLUGIN_SUPPORTS_PORT_UNSUPPORTED = 0x0,
@@ -43,73 +59,56 @@ typedef enum {
MM_PLUGIN_SUPPORTS_PORT_SUPPORTED
} MMPluginSupportsResult;
+typedef struct _MMPlugin MMPlugin;
+typedef struct _MMPluginClass MMPluginClass;
+
+typedef MMPlugin *(*MMPluginCreateFunc) (void);
+
struct _MMPlugin {
- GTypeInterface g_iface;
-
- /* Get plugin name */
- const char *(*get_name) (MMPlugin *self);
-
- /* Returns TRUE if the plugin should be sorted last in the list of plugins
- * loaded. This is useful to indicate plugins that need an additional check
- * on the probed vendor ID to see if they can support it. */
- gboolean (*get_sort_last) (const MMPlugin *self);
-
- /* Check whether a plugin supports a particular modem port, and what level
- * of support the plugin has for the device.
- * The check is done always asynchronously. When the result of the check is
- * ready, the passed callback will be called, and the result will be ready
- * to get retrieved with supports_port_finish().
- */
- void (* supports_port) (MMPlugin *self,
- const gchar *subsys,
- const gchar *name,
- const gchar *physdev_path,
- MMBaseModem *existing,
- GAsyncReadyCallback callback,
- gpointer user_data);
-
- /* Allows to get the result of an asynchronous port support check. */
- MMPluginSupportsResult (* supports_port_finish) (MMPlugin *self,
- GAsyncResult *result,
- GError **error);
-
- /* Called to cancel an ongoing supports_port() operation or to notify the
- * plugin to clean up that operation. For example, if two plugins support
- * a particular port, but the first plugin grabs the port, this method will
- * be called on the second plugin to allow that plugin to clean up resources
- * used while determining it's level of support for the port.
- */
- void (*supports_port_cancel) (MMPlugin *self,
- const char *subsys,
- const char *name);
-
- /* Given all the list of ports, launch creation of a new modem object */
- MMBaseModem * (*create_modem) (MMPlugin *self,
- GList *ports,
- GError **error);
+ GObject parent;
};
-GType mm_plugin_get_type (void);
-
-const char *mm_plugin_get_name (MMPlugin *plugin);
+struct _MMPluginClass {
+ GObjectClass parent;
+
+ /* Mandatory subclass functions */
+
+ /* Plugins need to provide a method to create a modem object given
+ * a list of port probes */
+ MMBaseModem *(*create_modem) (MMPlugin *plugin,
+ const gchar *sysfs_path,
+ const gchar *driver,
+ guint16 vendor,
+ guint16 product,
+ GList *probes,
+ GError **error);
+
+ /* Plugins need to provide a method to grab independent ports
+ * identified by port probes */
+ gboolean (*grab_port) (MMPlugin *plugin,
+ MMBaseModem *modem,
+ MMPortProbe *probe,
+ GError **error);
+};
-gboolean mm_plugin_get_sort_last (const MMPlugin *plugin);
+GType mm_plugin_get_type (void);
-void mm_plugin_supports_port (MMPlugin *plugin,
- const gchar *subsys,
- const gchar *name,
- const gchar *physdev_path,
- MMBaseModem *existing,
- GAsyncReadyCallback callback,
- gpointer user_data);
+const char *mm_plugin_get_name (MMPlugin *plugin);
+gboolean mm_plugin_get_sort_last (const MMPlugin *plugin);
+void mm_plugin_supports_port (MMPlugin *plugin,
+ const gchar *subsys,
+ const gchar *name,
+ const gchar *physdev_path,
+ MMBaseModem *existing,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
MMPluginSupportsResult mm_plugin_supports_port_finish (MMPlugin *plugin,
GAsyncResult *result,
GError **error);
-
-void mm_plugin_supports_port_cancel (MMPlugin *plugin,
- const char *subsys,
- const char *name);
+void mm_plugin_supports_port_cancel (MMPlugin *plugin,
+ const char *subsys,
+ const char *name);
MMBaseModem *mm_plugin_create_modem (MMPlugin *plugin,
GList *ports,