diff options
Diffstat (limited to 'plugins/icera/mm-iface-icera.c')
-rw-r--r-- | plugins/icera/mm-iface-icera.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/plugins/icera/mm-iface-icera.c b/plugins/icera/mm-iface-icera.c index 851dbc01..9f2d4a72 100644 --- a/plugins/icera/mm-iface-icera.c +++ b/plugins/icera/mm-iface-icera.c @@ -26,6 +26,7 @@ #include "mm-log.h" #include "mm-modem-helpers.h" #include "mm-iface-icera.h" +#include "mm-broadband-bearer-icera.h" #include "mm-base-modem-at.h" /*****************************************************************************/ @@ -492,6 +493,62 @@ mm_iface_icera_modem_3gpp_enable_unsolicited_events (MMIfaceModem3gpp *self, } /*****************************************************************************/ +/* Create bearer (Modem interface) */ + +MMBearer * +mm_iface_icera_modem_create_bearer_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error) +{ + if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error)) + return NULL; + + return MM_BEARER (g_object_ref ( + g_simple_async_result_get_op_res_gpointer ( + G_SIMPLE_ASYNC_RESULT (res)))); +} + +static void +broadband_bearer_icera_new_ready (GObject *source, + GAsyncResult *res, + GSimpleAsyncResult *simple) +{ + MMBearer *bearer = NULL; + GError *error = NULL; + + bearer = mm_broadband_bearer_icera_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); +} + +void +mm_iface_icera_modem_create_bearer (MMIfaceModem *self, + MMBearerProperties *properties, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + + /* Set a new ref to the bearer object as result */ + result = g_simple_async_result_new (G_OBJECT (self), + callback, + user_data, + mm_iface_icera_modem_create_bearer); + + mm_broadband_bearer_icera_new (MM_BROADBAND_MODEM (self), + properties, + NULL, /* cancellable */ + (GAsyncReadyCallback)broadband_bearer_icera_new_ready, + result); +} + +/*****************************************************************************/ static void iface_icera_init (gpointer g_iface) |