summaryrefslogtreecommitdiff
path: root/plugins/iridium/mm-broadband-modem-iridium.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/iridium/mm-broadband-modem-iridium.c')
-rw-r--r--plugins/iridium/mm-broadband-modem-iridium.c115
1 files changed, 53 insertions, 62 deletions
diff --git a/plugins/iridium/mm-broadband-modem-iridium.c b/plugins/iridium/mm-broadband-modem-iridium.c
index c64e8d2d..681d9123 100644
--- a/plugins/iridium/mm-broadband-modem-iridium.c
+++ b/plugins/iridium/mm-broadband-modem-iridium.c
@@ -23,7 +23,7 @@
#include <ctype.h>
#include "ModemManager.h"
-#include "mm-log.h"
+#include "mm-log-object.h"
#include "mm-errors-types.h"
#include "mm-base-modem-at.h"
#include "mm-iface-modem.h"
@@ -41,43 +41,54 @@ static void iface_modem_messaging_init (MMIfaceModemMessaging *iface);
G_DEFINE_TYPE_EXTENDED (MMBroadbandModemIridium, mm_broadband_modem_iridium, MM_TYPE_BROADBAND_MODEM, 0,
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM, iface_modem_init)
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_3GPP, iface_modem_3gpp_init)
- G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_MESSAGING, iface_modem_messaging_init));
+ G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_MESSAGING, iface_modem_messaging_init))
/*****************************************************************************/
-/* Operator Code and Name loading (3GPP interface) */
+/* Operator Code loading (3GPP interface) */
static gchar *
load_operator_code_finish (MMIfaceModem3gpp *self,
GAsyncResult *res,
GError **error)
{
+ return g_task_propagate_pointer (G_TASK (res), error);
+}
+
+static void
+load_operator_code (MMIfaceModem3gpp *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GTask *task;
+
+ task = g_task_new (self, NULL, callback, user_data);
/* Only "90103" operator code is assumed */
- return g_strdup ("90103");
+ g_task_return_pointer (task, g_strdup ("90103"), g_free);
+ g_object_unref (task);
}
+/*****************************************************************************/
+/* Operator Name loading (3GPP interface) */
+
static gchar *
load_operator_name_finish (MMIfaceModem3gpp *self,
GAsyncResult *res,
GError **error)
{
- /* Only "IRIDIUM" operator name is assumed */
- return g_strdup ("IRIDIUM");
+ return g_task_propagate_pointer (G_TASK (res), error);
}
static void
-load_operator_name_or_code (MMIfaceModem3gpp *self,
- GAsyncReadyCallback callback,
- gpointer user_data)
+load_operator_name (MMIfaceModem3gpp *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
- GSimpleAsyncResult *result;
-
- result = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- load_operator_name_or_code);
- g_simple_async_result_set_op_res_gboolean (result, TRUE);
- g_simple_async_result_complete_in_idle (result);
- g_object_unref (result);
+ GTask *task;
+
+ task = g_task_new (self, NULL, callback, user_data);
+ /* Only "IRIDIUM" operator name is assumed */
+ g_task_return_pointer (task, g_strdup ("IRIDIUM"), g_free);
+ g_object_unref (task);
}
/*****************************************************************************/
@@ -168,25 +179,24 @@ setup_flow_control_finish (MMIfaceModem *self,
GAsyncResult *res,
GError **error)
{
- return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
+ return g_task_propagate_boolean (G_TASK (res), error);
}
static void
setup_flow_control_ready (MMBroadbandModemIridium *self,
GAsyncResult *res,
- GSimpleAsyncResult *operation_result)
+ GTask *task)
{
GError *error = NULL;
if (!mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, &error))
/* Let the error be critical. We DO need RTS/CTS in order to have
* proper modem disabling. */
- g_simple_async_result_take_error (operation_result, error);
+ g_task_return_error (task, error);
else
- g_simple_async_result_set_op_res_gboolean (operation_result, TRUE);
+ g_task_return_boolean (task, TRUE);
- g_simple_async_result_complete (operation_result);
- g_object_unref (operation_result);
+ g_object_unref (task);
}
static void
@@ -194,13 +204,6 @@ setup_flow_control (MMIfaceModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *result;
-
- result = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- setup_flow_control);
-
/* Enable RTS/CTS flow control.
* Other available values:
* AT&K0: Disable flow control
@@ -208,12 +211,13 @@ setup_flow_control (MMIfaceModem *self,
* AT&K4: XOFF/XON
* AT&K6: Both RTS/CTS and XOFF/XON
*/
+ g_object_set (self, MM_BROADBAND_MODEM_FLOW_CONTROL, MM_FLOW_CONTROL_RTS_CTS, NULL);
mm_base_modem_at_command (MM_BASE_MODEM (self),
"&K3",
3,
FALSE,
(GAsyncReadyCallback)setup_flow_control_ready,
- result);
+ g_task_new (self, NULL, callback, user_data));
}
/*****************************************************************************/
@@ -224,7 +228,7 @@ load_supported_modes_finish (MMIfaceModem *self,
GAsyncResult *res,
GError **error)
{
- return g_array_ref (g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res)));
+ return g_task_propagate_pointer (G_TASK (res), error);
}
static void
@@ -232,14 +236,9 @@ load_supported_modes (MMIfaceModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *result;
GArray *combinations;
MMModemModeCombination mode;
-
- result = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- load_supported_modes);
+ GTask *task;
/* Build list of combinations */
combinations = g_array_sized_new (FALSE, FALSE, sizeof (MMModemModeCombination), 1);
@@ -249,9 +248,9 @@ load_supported_modes (MMIfaceModem *self,
mode.preferred = MM_MODEM_MODE_NONE;
g_array_append_val (combinations, mode);
- g_simple_async_result_set_op_res_gpointer (result, combinations, (GDestroyNotify) g_array_unref);
- g_simple_async_result_complete_in_idle (result);
- g_object_unref (result);
+ task = g_task_new (self, NULL, callback, user_data);
+ g_task_return_pointer (task, combinations, (GDestroyNotify) g_array_unref);
+ g_object_unref (task);
}
/*****************************************************************************/
@@ -285,12 +284,7 @@ create_bearer_finish (MMIfaceModem *self,
GAsyncResult *res,
GError **error)
{
- MMBaseBearer *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_base_bearer_get_path (bearer));
-
- return g_object_ref (bearer);
+ return g_task_propagate_pointer (G_TASK (res), error);
}
static void
@@ -300,20 +294,14 @@ create_bearer (MMIfaceModem *self,
gpointer user_data)
{
MMBaseBearer *bearer;
- GSimpleAsyncResult *result;
+ GTask *task;
- result = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- create_bearer);
- mm_dbg ("Creating Iridium bearer...");
+ mm_obj_dbg (self, "creating Iridium bearer...");
bearer = mm_bearer_iridium_new (MM_BROADBAND_MODEM_IRIDIUM (self),
properties);
- 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);
+ task = g_task_new (self, NULL, callback, user_data);
+ g_task_return_pointer (task, bearer, g_object_unref);
+ g_object_unref (task);
}
/*****************************************************************************/
@@ -337,7 +325,7 @@ setup_ports (MMBroadbandModem *self)
MM_BROADBAND_MODEM_CLASS (mm_broadband_modem_iridium_parent_class)->setup_ports (self);
/* Set 9600 baudrate by default in the AT port */
- mm_dbg ("Baudrate will be set to 9600 bps...");
+ mm_obj_dbg (self, "baudrate will be set to 9600 bps...");
primary = mm_base_modem_peek_port_primary (MM_BASE_MODEM (self));
if (!primary)
return;
@@ -363,6 +351,9 @@ mm_broadband_modem_iridium_new (const gchar *device,
MM_BASE_MODEM_PLUGIN, plugin,
MM_BASE_MODEM_VENDOR_ID, vendor_id,
MM_BASE_MODEM_PRODUCT_ID, product_id,
+ /* Iridium bearer supports TTY only */
+ MM_BASE_MODEM_DATA_NET_SUPPORTED, FALSE,
+ MM_BASE_MODEM_DATA_TTY_SUPPORTED, TRUE,
/* Allow only up to 3 consecutive timeouts in the serial port */
MM_BASE_MODEM_MAX_TIMEOUTS, 3,
/* Only CS network is supported by the Iridium modem */
@@ -409,9 +400,9 @@ static void
iface_modem_3gpp_init (MMIfaceModem3gpp *iface)
{
/* Fixed operator code and name to be reported */
- iface->load_operator_name = load_operator_name_or_code;
+ iface->load_operator_name = load_operator_name;
iface->load_operator_name_finish = load_operator_name_finish;
- iface->load_operator_code = load_operator_name_or_code;
+ iface->load_operator_code = load_operator_code;
iface->load_operator_code_finish = load_operator_code_finish;
/* Don't try to scan networks with AT+COPS=?.