cdma: use secondary port more aggressively where one exists

Like on the Huawei EC121 and EC168C (Reliance India).
This commit is contained in:
Dan Williams
2009-10-11 11:15:46 -07:00
parent 91171cdae2
commit e1d757ea76

View File

@@ -202,10 +202,17 @@ enable_error_reporting_done (MMSerialPort *port,
gpointer user_data) gpointer user_data)
{ {
MMCallbackInfo *info = (MMCallbackInfo *) user_data; MMCallbackInfo *info = (MMCallbackInfo *) user_data;
MMGenericCdmaPrivate *priv = MM_GENERIC_CDMA_GET_PRIVATE (info->modem);
if (error) if (error)
g_warning ("Your CDMA modem does not support +CMEE command"); 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() */ /* Ignore errors, see FIXME in init_done() */
mm_callback_info_schedule (info); mm_callback_info_schedule (info);
} }
@@ -290,6 +297,9 @@ disable (MMModem *modem,
info = mm_callback_info_new (modem, callback, user_data); 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))) if (mm_port_get_connected (MM_PORT (priv->primary)))
mm_serial_port_flash (priv->primary, 1000, disable_flash_done, info); mm_serial_port_flash (priv->primary, 1000, disable_flash_done, info);
else else
@@ -452,9 +462,15 @@ get_card_info (MMModem *modem,
G_CALLBACK (callback), G_CALLBACK (callback),
user_data); user_data);
mm_serial_port_queue_command_cached (priv->primary, "+GMI", 3, get_manufacturer_done, info); mm_serial_port_queue_command_cached (priv->secondary ? priv->secondary : priv->primary,
mm_serial_port_queue_command_cached (priv->primary, "+GMM", 3, get_model_done, info); "+GMI", 3,
mm_serial_port_queue_command_cached (priv->primary, "+GMR", 3, get_version_done, info); 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); info = mm_callback_info_uint_new (MM_MODEM (modem), callback, user_data);
/* Prefer secondary port for signal strength */ /* Prefer secondary port for signal strength */
mm_serial_port_queue_command (priv->secondary ? priv->secondary : priv->primary, mm_serial_port_queue_command (priv->secondary ? priv->secondary : priv->primary,
"+CSQ", "+CSQ", 3,
3,
get_signal_quality_done, info); 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); 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 static void
@@ -746,7 +763,9 @@ get_serving_system (MMModemCdma *modem,
G_CALLBACK (callback), G_CALLBACK (callback),
user_data); 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 static void