diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-02-17 09:36:05 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-15 14:15:08 +0100 |
commit | 76e52236a44d87bc7aacb141b956146ab67d66eb (patch) | |
tree | 8d064afded48f2752659c668b64bf9dc2ed4e5a8 | |
parent | 6d8404a6ab9e4fb63654120ade3f076c6f43030f (diff) |
iridium: create a MMBearerIridium
-rw-r--r-- | plugins/mm-broadband-modem-iridium.c | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/plugins/mm-broadband-modem-iridium.c b/plugins/mm-broadband-modem-iridium.c index ef1afb10..bb5cdc47 100644 --- a/plugins/mm-broadband-modem-iridium.c +++ b/plugins/mm-broadband-modem-iridium.c @@ -31,6 +31,7 @@ #include "mm-iface-modem-messaging.h" #include "mm-broadband-modem-iridium.h" #include "mm-sim-iridium.h" +#include "mm-bearer-iridium.h" #include "mm-modem-helpers.h" static void iface_modem_init (MMIfaceModem *iface); @@ -336,6 +337,46 @@ create_sim (MMIfaceModem *self, } /*****************************************************************************/ +/* Create Bearer (Modem interface) */ + +static MMBearer * +create_bearer_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error) +{ + MMBearer *bearer; + + bearer = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res)); + mm_dbg ("New Iridium bearer created at DBus path '%s'", mm_bearer_get_path (bearer)); + + return g_object_ref (bearer); +} + +static void +create_bearer (MMIfaceModem *self, + MMCommonBearerProperties *properties, + GAsyncReadyCallback callback, + gpointer user_data) +{ + MMBearer *bearer; + GSimpleAsyncResult *result; + + result = g_simple_async_result_new (G_OBJECT (self), + callback, + user_data, + create_bearer); + /* We just create a MMBearerIridium + * Note that we do not need to use properties here */ + mm_dbg ("Creating Iridium bearer..."); + bearer = mm_bearer_iridium_new (MM_BROADBAND_MODEM_IRIDIUM (self)); + g_simple_async_result_set_op_res_gpointer (result, + bearer, + (GDestroyNotify)g_object_unref); + g_simple_async_result_complete_in_idle (result); + g_object_unref (result); +} + +/*****************************************************************************/ static void setup_ports (MMBroadbandModem *self) @@ -387,9 +428,11 @@ iface_modem_init (MMIfaceModem *iface) iface->modem_init = modem_init; iface->modem_init_finish = modem_init_finish; - /* Create Iridium-specific SIM */ + /* Create Iridium-specific SIM and bearer*/ iface->create_sim = create_sim; iface->create_sim_finish = create_sim_finish; + iface->create_bearer = create_bearer; + iface->create_bearer_finish = create_bearer_finish; /* CSQF-based signal quality */ iface->load_signal_quality = load_signal_quality; |