On Tue, 2016-05-31 at 11:24 +0200, Aleksander Morgado wrote:
> ---
> 
> Hey Yegor,
> 
> Sorry, completely forgot about it.
> 
> Could you try this patch and see if it works?

Looks good to me.

> ---
>  plugins/simtech/mm-plugin-simtech.c | 79 ++++++++++++++++++++-------
> ----------
>  1 file changed, 43 insertions(+), 36 deletions(-)
> 
> diff --git a/plugins/simtech/mm-plugin-simtech.c
> b/plugins/simtech/mm-plugin-simtech.c
> index fcaa250..b736185 100644
> --- a/plugins/simtech/mm-plugin-simtech.c
> +++ b/plugins/simtech/mm-plugin-simtech.c
> @@ -25,6 +25,10 @@
>  #include "mm-plugin-simtech.h"
>  #include "mm-broadband-modem-simtech.h"
> 
> +#if defined WITH_QMI
> +#include "mm-broadband-modem-qmi.h"
> +#endif
> +
>  G_DEFINE_TYPE (MMPluginSimtech, mm_plugin_simtech, MM_TYPE_PLUGIN)
> 
>  MM_PLUGIN_DEFINE_MAJOR_VERSION
> @@ -41,6 +45,17 @@ create_modem (MMPlugin *self,
>                GList *probes,
>                GError **error)
>  {
> +#if defined WITH_QMI
> +    if (mm_port_probe_list_has_qmi_port (probes)) {
> +        mm_dbg ("QMI-powered SimTech modem found...");
> +        return MM_BASE_MODEM (mm_broadband_modem_qmi_new
> (sysfs_path,
> +                                                          drivers,
> +                                                          mm_plugin_
> get_name (self),
> +                                                          vendor,
> +                                                          product));
> +    }
> +#endif
> +
>      return MM_BASE_MODEM (mm_broadband_modem_simtech_new
> (sysfs_path,
>                                                            drivers,
>                                                            mm_plugin_
> get_name (self),
> @@ -58,44 +73,35 @@ grab_port (MMPlugin *self,
>      MMPortType ptype;
>      MMPortSerialAtFlag pflags = MM_PORT_SERIAL_AT_FLAG_NONE;
> 
> -    /* The Simtech plugin cannot do anything with non-AT non-QCDM
> ports */
> -    if (!mm_port_probe_is_at (probe) &&
> -        !mm_port_probe_is_qcdm (probe)) {
> -        g_set_error_literal (error,
> -                             MM_CORE_ERROR,
> -                             MM_CORE_ERROR_UNSUPPORTED,
> -                             "Ignoring non-AT non-QCDM port");
> -        return FALSE;
> -    }
> -
>      port = mm_port_probe_peek_port (probe);
> -
> -    /* Look for port type hints; just probing can't distinguish
> which port should
> -     * be the data/primary port on these devices.  We have to tag
> them based on
> -     * what the Windows .INF files say the port layout should be.
> -     */
> -    if (g_udev_device_get_property_as_boolean (port,
> "ID_MM_SIMTECH_PORT_TYPE_MODEM")) {
> -        mm_dbg ("Simtech: AT port '%s/%s' flagged as primary",
> -                mm_port_probe_get_port_subsys (probe),
> -                mm_port_probe_get_port_name (probe));
> -        pflags = MM_PORT_SERIAL_AT_FLAG_PRIMARY;
> -    } else if (g_udev_device_get_property_as_boolean (port,
> "ID_MM_SIMTECH_PORT_TYPE_AUX")) {
> -        mm_dbg ("Simtech: AT port '%s/%s' flagged as secondary",
> -                mm_port_probe_get_port_subsys (probe),
> -                mm_port_probe_get_port_name (probe));
> -        pflags = MM_PORT_SERIAL_AT_FLAG_SECONDARY;
> +    ptype = mm_port_probe_get_port_type (probe);
> +
> +    if (mm_port_probe_is_at (probe)) {
> +        /* Look for port type hints; just probing can't distinguish
> which port should
> +         * be the data/primary port on these devices.  We have to
> tag them based on
> +         * what the Windows .INF files say the port layout should
> be.
> +         */
> +        if (g_udev_device_get_property_as_boolean (port,
> "ID_MM_SIMTECH_PORT_TYPE_MODEM")) {
> +            mm_dbg ("Simtech: AT port '%s/%s' flagged as primary",
> +                    mm_port_probe_get_port_subsys (probe),
> +                    mm_port_probe_get_port_name (probe));
> +            pflags = MM_PORT_SERIAL_AT_FLAG_PRIMARY;
> +        } else if (g_udev_device_get_property_as_boolean (port,
> "ID_MM_SIMTECH_PORT_TYPE_AUX")) {
> +            mm_dbg ("Simtech: AT port '%s/%s' flagged as secondary",
> +                    mm_port_probe_get_port_subsys (probe),
> +                    mm_port_probe_get_port_name (probe));
> +            pflags = MM_PORT_SERIAL_AT_FLAG_SECONDARY;
> +        }
> +
> +        /* If the port was tagged by the udev rules but isn't a
> primary or secondary,
> +         * then ignore it to guard against race conditions if a
> device just happens
> +         * to show up with more than two AT-capable ports.
> +         */
> +        if (pflags == MM_PORT_SERIAL_AT_FLAG_NONE &&
> +            g_udev_device_get_property_as_boolean (port,
> "ID_MM_SIMTECH_TAGGED"))
> +            ptype = MM_PORT_TYPE_IGNORED;
>      }
> 
> -    /* If the port was tagged by the udev rules but isn't a primary
> or secondary,
> -     * then ignore it to guard against race conditions if a device
> just happens
> -     * to show up with more than two AT-capable ports.
> -     */
> -    if (pflags == MM_PORT_SERIAL_AT_FLAG_NONE &&
> -        g_udev_device_get_property_as_boolean (port,
> "ID_MM_SIMTECH_TAGGED"))
> -        ptype = MM_PORT_TYPE_IGNORED;
> -    else
> -        ptype = mm_port_probe_get_port_type (probe);
> -
>      return mm_base_modem_grab_port (modem,
>                                      mm_port_probe_get_port_subsys
> (probe),
>                                      mm_port_probe_get_port_name
> (probe),
> @@ -110,7 +116,7 @@ grab_port (MMPlugin *self,
>  G_MODULE_EXPORT MMPlugin *
>  mm_plugin_create (void)
>  {
> -    static const gchar *subsystems[] = { "tty", NULL };
> +    static const gchar *subsystems[] = { "tty", "net", "usb", NULL
> };
>      static const guint16 vendor_ids[] = { 0x1e0e, /* A-Link (for
> now) */
>                                            0 };
> 
> @@ -121,6 +127,7 @@ mm_plugin_create (void)
>                        MM_PLUGIN_ALLOWED_VENDOR_IDS, vendor_ids,
>                        MM_PLUGIN_ALLOWED_AT,         TRUE,
>                        MM_PLUGIN_ALLOWED_QCDM,       TRUE,
> +                      MM_PLUGIN_ALLOWED_QMI,        TRUE,
>                        NULL));
>  }
> 
> --
> 2.8.2
> _______________________________________________
> ModemManager-devel mailing list
> ModemManager-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/modemmanager-devel
_______________________________________________
ModemManager-devel mailing list
ModemManager-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/modemmanager-devel

Reply via email to