diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-07-20 19:42:22 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-06 20:07:27 +0200 |
commit | 4f1269344fa5b27286cd01314477066c07770e27 (patch) | |
tree | 0ff1fbce89ae83e737b3093c5a55b0a4bd850948 | |
parent | fa8bcb0a7f9a84822ea2f196c1165a93e8380c11 (diff) |
icera: create a generic broadband bearer when no net ports available
-rw-r--r-- | plugins/icera/mm-broadband-modem-icera.c | 43 |
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); } /*****************************************************************************/ |