diff options
Diffstat (limited to 'src/mm-plugin.h')
-rw-r--r-- | src/mm-plugin.h | 62 |
1 files changed, 41 insertions, 21 deletions
diff --git a/src/mm-plugin.h b/src/mm-plugin.h index 7497afbd..b27e7a2f 100644 --- a/src/mm-plugin.h +++ b/src/mm-plugin.h @@ -20,17 +20,25 @@ #include <glib.h> #include <glib-object.h> -#include <gudev/gudev.h> #include "mm-base-modem.h" #include "mm-port.h" #include "mm-port-probe.h" #include "mm-device.h" +#include "mm-kernel-device.h" -#define MM_PLUGIN_GENERIC_NAME "Generic" #define MM_PLUGIN_MAJOR_VERSION 4 #define MM_PLUGIN_MINOR_VERSION 0 +#if defined (G_HAVE_GNUC_VISIBILITY) +#define VISIBILITY __attribute__((visibility("protected"))) +#else +#define VISIBILITY +#endif + +#define MM_PLUGIN_DEFINE_MAJOR_VERSION VISIBILITY int mm_plugin_major_version = MM_PLUGIN_MAJOR_VERSION; +#define MM_PLUGIN_DEFINE_MINOR_VERSION VISIBILITY int mm_plugin_minor_version = MM_PLUGIN_MINOR_VERSION; + #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)) @@ -39,6 +47,7 @@ #define MM_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_PLUGIN, MMPluginClass)) #define MM_PLUGIN_NAME "name" +#define MM_PLUGIN_IS_GENERIC "is-generic" #define MM_PLUGIN_ALLOWED_SUBSYSTEMS "allowed-subsystems" #define MM_PLUGIN_ALLOWED_DRIVERS "allowed-drivers" #define MM_PLUGIN_FORBIDDEN_DRIVERS "forbidden-drivers" @@ -57,6 +66,9 @@ #define MM_PLUGIN_ICERA_PROBE "icera-probe" #define MM_PLUGIN_ALLOWED_ICERA "allowed-icera" #define MM_PLUGIN_FORBIDDEN_ICERA "forbidden-icera" +#define MM_PLUGIN_XMM_PROBE "xmm-probe" +#define MM_PLUGIN_ALLOWED_XMM "allowed-xmm" +#define MM_PLUGIN_FORBIDDEN_XMM "forbidden-xmm" #define MM_PLUGIN_CUSTOM_INIT "custom-init" #define MM_PLUGIN_CUSTOM_AT_PROBE "custom-at-probe" #define MM_PLUGIN_SEND_DELAY "send-delay" @@ -64,7 +76,8 @@ #define MM_PLUGIN_SEND_LF "send-lf" typedef enum { - MM_PLUGIN_SUPPORTS_PORT_UNSUPPORTED = 0x0, + MM_PLUGIN_SUPPORTS_PORT_UNKNOWN = -1, + MM_PLUGIN_SUPPORTS_PORT_UNSUPPORTED, MM_PLUGIN_SUPPORTS_PORT_DEFER, MM_PLUGIN_SUPPORTS_PORT_DEFER_UNTIL_SUGGESTED, MM_PLUGIN_SUPPORTS_PORT_SUPPORTED @@ -93,8 +106,8 @@ struct _MMPluginClass { /* Plugins need to provide a method to create a modem object given * a list of port probes (Mandatory) */ - MMBaseModem *(*create_modem) (MMPlugin *plugin, - const gchar *sysfs_path, + MMBaseModem *(*create_modem) (MMPlugin *self, + const gchar *uid, const gchar **drivers, guint16 vendor, guint16 product, @@ -103,32 +116,39 @@ struct _MMPluginClass { /* Plugins need to provide a method to grab independent ports * identified by port probes (Optional) */ - gboolean (*grab_port) (MMPlugin *plugin, + gboolean (*grab_port) (MMPlugin *self, MMBaseModem *modem, MMPortProbe *probe, GError **error); }; GType mm_plugin_get_type (void); +G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMPlugin, g_object_unref) -const gchar *mm_plugin_get_name (MMPlugin *plugin); +const gchar *mm_plugin_get_name (MMPlugin *self); +const gchar **mm_plugin_get_allowed_subsystems (MMPlugin *self); +const gchar **mm_plugin_get_allowed_udev_tags (MMPlugin *self); +const guint16 *mm_plugin_get_allowed_vendor_ids (MMPlugin *self); +const mm_uint16_pair *mm_plugin_get_allowed_product_ids (MMPlugin *self); +gboolean mm_plugin_is_generic (MMPlugin *self); /* This method will run all pre-probing filters, to see if we can discard this * plugin from the probing logic as soon as possible. */ -MMPluginSupportsHint mm_plugin_discard_port_early (MMPlugin *plugin, - MMDevice *device, - GUdevDevice *port); - -void mm_plugin_supports_port (MMPlugin *plugin, - MMDevice *device, - GUdevDevice *port, - GAsyncReadyCallback callback, - gpointer user_data); -MMPluginSupportsResult mm_plugin_supports_port_finish (MMPlugin *plugin, - GAsyncResult *result, - GError **error); - -MMBaseModem *mm_plugin_create_modem (MMPlugin *plugin, +MMPluginSupportsHint mm_plugin_discard_port_early (MMPlugin *self, + MMDevice *device, + MMKernelDevice *port); + +void mm_plugin_supports_port (MMPlugin *self, + MMDevice *device, + MMKernelDevice *port, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +MMPluginSupportsResult mm_plugin_supports_port_finish (MMPlugin *self, + GAsyncResult *result, + GError **error); + +MMBaseModem *mm_plugin_create_modem (MMPlugin *self, MMDevice *device, GError **error); |