aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2009-10-11 11:15:46 -0700
committerDan Williams <dcbw@redhat.com>2009-10-11 11:15:46 -0700
commite1d757ea763ebb72ea8d7ff979ef0041181d7bd1 (patch)
treeb528152ebf7d022e647492312fc7af32c68f0539
parent91171cdae295352011252d28d3d777960d0d876a (diff)
cdma: use secondary port more aggressively where one exists
Like on the Huawei EC121 and EC168C (Reliance India).
-rw-r--r--src/mm-generic-cdma.c33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/mm-generic-cdma.c b/src/mm-generic-cdma.c
index 00b8d027..757e03d2 100644
--- a/src/mm-generic-cdma.c
+++ b/src/mm-generic-cdma.c
@@ -202,10 +202,17 @@ enable_error_reporting_done (MMSerialPort *port,
gpointer user_data)
{
MMCallbackInfo *info = (MMCallbackInfo *) user_data;
+ MMGenericCdmaPrivate *priv = MM_GENERIC_CDMA_GET_PRIVATE (info->modem);
if (error)
g_warning ("Your CDMA modem does not support +CMEE command");
+ /* Open up the second port, if one exists */
+ if (priv->secondary) {
+ if (!mm_serial_port_open (priv->secondary, &info->error))
+ g_assert (info->error);
+ }
+
/* Ignore errors, see FIXME in init_done() */
mm_callback_info_schedule (info);
}
@@ -290,6 +297,9 @@ disable (MMModem *modem,
info = mm_callback_info_new (modem, callback, user_data);
+ if (priv->secondary)
+ mm_serial_port_close (priv->secondary);
+
if (mm_port_get_connected (MM_PORT (priv->primary)))
mm_serial_port_flash (priv->primary, 1000, disable_flash_done, info);
else
@@ -452,9 +462,15 @@ get_card_info (MMModem *modem,
G_CALLBACK (callback),
user_data);
- mm_serial_port_queue_command_cached (priv->primary, "+GMI", 3, get_manufacturer_done, info);
- mm_serial_port_queue_command_cached (priv->primary, "+GMM", 3, get_model_done, info);
- mm_serial_port_queue_command_cached (priv->primary, "+GMR", 3, get_version_done, info);
+ mm_serial_port_queue_command_cached (priv->secondary ? priv->secondary : priv->primary,
+ "+GMI", 3,
+ get_manufacturer_done, info);
+ mm_serial_port_queue_command_cached (priv->secondary ? priv->secondary : priv->primary,
+ "+GMM", 3,
+ get_model_done, info);
+ mm_serial_port_queue_command_cached (priv->secondary ? priv->secondary : priv->primary,
+ "+GMR", 3,
+ get_version_done, info);
}
/*****************************************************************************/
@@ -519,8 +535,7 @@ get_signal_quality (MMModemCdma *modem,
info = mm_callback_info_uint_new (MM_MODEM (modem), callback, user_data);
/* Prefer secondary port for signal strength */
mm_serial_port_queue_command (priv->secondary ? priv->secondary : priv->primary,
- "+CSQ",
- 3,
+ "+CSQ", 3,
get_signal_quality_done, info);
}
@@ -563,7 +578,9 @@ get_esn (MMModemCdma *modem,
}
info = mm_callback_info_string_new (MM_MODEM (modem), callback, user_data);
- mm_serial_port_queue_command_cached (priv->primary, "+GSN", 3, get_string_done, info);
+ mm_serial_port_queue_command_cached (priv->secondary ? priv->secondary : priv->primary,
+ "+GSN", 3,
+ get_string_done, info);
}
static void
@@ -746,7 +763,9 @@ get_serving_system (MMModemCdma *modem,
G_CALLBACK (callback),
user_data);
- mm_serial_port_queue_command (priv->primary, "+CSS?", 3, serving_system_done, info);
+ mm_serial_port_queue_command (priv->secondary ? priv->secondary : priv->primary,
+ "+CSS?", 3,
+ serving_system_done, info);
}
static void