static void icera_connected (MMAtSerialPort *port, GString *response, GError *error, gpointer user_data) { MMCallbackInfo *info = (MMCallbackInfo *) user_data; /* If the modem has already been removed, return without * scheduling callback */ if (mm_callback_info_check_modem_removed (info)) return; if (error) { mm_generic_gsm_connect_complete (MM_GENERIC_GSM (info->modem), error, info); } else { MMModemIcera *self = MM_MODEM_ICERA (info->modem); MMModemIceraPrivate *priv = MM_MODEM_ICERA_GET_PRIVATE (self); g_warn_if_fail (priv->connect_pending_id == 0); if (priv->connect_pending_id) g_source_remove (priv->connect_pending_id); priv->connect_pending_data = info; priv->connect_pending_id = g_timeout_add_seconds (30, icera_connect_timed_out, self); } }
static void connect_auth_done (MMModem *modem, GError *error, gpointer user_data) { MMCallbackInfo *info = (MMCallbackInfo *) user_data; GError *tmp_error; tmp_error = mm_modem_check_removed (modem, error); if (tmp_error) { mm_generic_gsm_connect_complete (MM_GENERIC_GSM (modem), tmp_error, info); g_clear_error (&tmp_error); } else { /* Now connect; kill any existing connections first */ hso_call_control (MM_MODEM_HSO (modem), FALSE, TRUE, old_context_clear_done, info); } }
static void old_context_clear_done (MMModem *modem, GError *error, gpointer user_data) { MMCallbackInfo *info = (MMCallbackInfo *) user_data; GError *tmp_error; tmp_error = mm_modem_check_removed (modem, error); if (tmp_error) { mm_generic_gsm_connect_complete (MM_GENERIC_GSM (modem), tmp_error, info); g_clear_error (&tmp_error); } else { /* Success, activate the PDP context and start the data session */ hso_call_control (MM_MODEM_HSO (modem), TRUE, FALSE, hso_enabled, info); } }
static void hso_enabled (MMModem *modem, GError *error, gpointer user_data) { MMCallbackInfo *info = (MMCallbackInfo *) user_data; GError *tmp_error; tmp_error = mm_modem_check_removed (modem, error); if (tmp_error) { mm_generic_gsm_connect_complete (MM_GENERIC_GSM (modem), tmp_error, info); g_clear_error (&tmp_error); } else { MMModemHsoPrivate *priv = MM_MODEM_HSO_GET_PRIVATE (modem); priv->connect_pending_data = info; priv->connect_pending_id = g_timeout_add_seconds (30, hso_connect_timed_out, modem); } }
static void auth_done (MMAtSerialPort *port, GString *response, GError *error, gpointer user_data) { MMCallbackInfo *info = (MMCallbackInfo *) user_data; /* If the modem has already been removed, return without * scheduling callback */ if (mm_callback_info_check_modem_removed (info)) return; if (error) mm_generic_gsm_connect_complete (MM_GENERIC_GSM (info->modem), error, info); else { /* Ensure the PDP context is deactivated */ icera_call_control (MM_MODEM_ICERA (info->modem), FALSE, old_context_clear_done, info); } }
static void connect_pending_done (MMModemIcera *self) { MMModemIceraPrivate *priv = MM_MODEM_ICERA_GET_PRIVATE (self); GError *error = NULL; if (priv->connect_pending_data) { if (priv->connect_pending_data->error) { error = priv->connect_pending_data->error; priv->connect_pending_data->error = NULL; } /* Complete the connect */ mm_generic_gsm_connect_complete (MM_GENERIC_GSM (self), error, priv->connect_pending_data); priv->connect_pending_data = NULL; } if (priv->connect_pending_id) { g_source_remove (priv->connect_pending_id); priv->connect_pending_id = 0; } }