aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-07-20 19:42:22 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-08-06 20:07:27 +0200
commit4f1269344fa5b27286cd01314477066c07770e27 (patch)
tree0ff1fbce89ae83e737b3093c5a55b0a4bd850948
parentfa8bcb0a7f9a84822ea2f196c1165a93e8380c11 (diff)
icera: create a generic broadband bearer when no net ports available
-rw-r--r--plugins/icera/mm-broadband-modem-icera.c43
1 files changed, 39 insertions, 4 deletions
diff --git a/plugins/icera/mm-broadband-modem-icera.c b/plugins/icera/mm-broadband-modem-icera.c
index b3eb5cda..00a76b1e 100644
--- a/plugins/icera/mm-broadband-modem-icera.c
+++ b/plugins/icera/mm-broadband-modem-icera.c
@@ -738,21 +738,56 @@ broadband_bearer_icera_new_ready (GObject *source,
}
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);
}
/*****************************************************************************/