Hey Nathan,

>  static void
> +poll_connection_ready (MMBaseModem *modem,
> +                       GAsyncResult *res,
> +                       MMBroadbandBearerNovatel *bearer)
> +{
> +    const gchar *result;
> +    GError *error = NULL;
> +
> +    result = mm_base_modem_at_command_finish (modem, res, &error);
> +    if (!result) {
> +        mm_warn ("QMI connection status failed: %s", error->message);
> +        g_error_free (error);
> +    } else {
> +        result = mm_strip_tag (result, "$NWQMISTATUS:");
> +        if (g_strrstr(result, "QMI State: DISCONNECTED")) {
> +            mm_bearer_report_disconnection (MM_BEARER (bearer));
> +            g_source_remove (bearer->priv->connection_poller);
> +            bearer->priv->connection_poller = 0;
> +            bearer->priv->connection_modem = NULL;
> +        }
> +    }
> +}
> +
> +static gboolean
> +poll_connection (MMBroadbandBearerNovatel *bearer)
> +{
> +    mm_base_modem_at_command (
> +        bearer->priv->connection_modem,
> +        "$NWQMISTATUS",
> +        3,
> +        FALSE,
> +        (GAsyncReadyCallback)poll_connection_ready,
> +        bearer);
> +    return TRUE;
> +}


Given that the $NWQMISTATUS reply is not bearer-specific (reports
overall status of the modem), I was thinking in moving the periodic
connectivity check to MMIfaceModem instead, and plug it in using the
same logic as e.g. the signal quality check. In that way, other
implementations (e.g. Samsung) could benefit from the same generic
timeout handling logic. What do you think?

-- 
Aleksander
_______________________________________________
networkmanager-list mailing list
networkmanager-list@gnome.org
http://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to