icera: create a generic broadband bearer when no net ports available

This commit is contained in:
Aleksander Morgado
2012-08-06 20:07:27 +02:00
parent fa8bcb0a7f
commit 4f1269344f
+39 -4
View File
@@ -737,22 +737,57 @@ broadband_bearer_icera_new_ready (GObject *source,
g_object_unref (simple);
}
static void
broadband_bearer_new_ready (GObject *source,
GAsyncResult *res,
GSimpleAsyncResult *simple)
{
MMBearer *bearer = NULL;
GError *error = NULL;
bearer = mm_broadband_bearer_new_finish (res, &error);
if (!bearer)
g_simple_async_result_take_error (simple, error);
else
g_simple_async_result_set_op_res_gpointer (simple,
bearer,
(GDestroyNotify)g_object_unref);
g_simple_async_result_complete (simple);
g_object_unref (simple);
}
static void
modem_create_bearer (MMIfaceModem *self,
MMBearerProperties *properties,
GAsyncReadyCallback callback,
gpointer user_data)
{
GSimpleAsyncResult *result;
result = g_simple_async_result_new (G_OBJECT (self),
callback,
user_data,
modem_create_bearer);
/* If data port is AT create a generic bearer */
if (MM_IS_AT_SERIAL_PORT (mm_base_modem_peek_best_data_port (MM_BASE_MODEM (self)))) {
mm_broadband_bearer_new (
MM_BROADBAND_MODEM (self),
properties,
NULL, /* cancellable */
(GAsyncReadyCallback)broadband_bearer_new_ready,
result);
return;
}
/* Otherwise create a Icera bearer */
mm_broadband_bearer_icera_new (
MM_BROADBAND_MODEM (self),
MM_BROADBAND_MODEM_ICERA (self)->priv->default_ip_method,
properties,
NULL, /* cancellable */
(GAsyncReadyCallback)broadband_bearer_icera_new_ready,
g_simple_async_result_new (G_OBJECT (self),
callback,
user_data,
modem_create_bearer));
result);
}
/*****************************************************************************/