cdma: prefer primary port unless it's connected

This commit is contained in:
Dan Williams
2010-01-18 23:59:54 -08:00
parent a1520465fd
commit 73e10c77d3
2 changed files with 78 additions and 64 deletions
+13 -10
View File
@@ -227,23 +227,26 @@ query_registration_state (MMGenericCdma *cdma,
gpointer user_data)
{
MMCallbackInfo *info;
MMSerialPort *primary, *secondary;
MMSerialPort *primary, *secondary, *port;
primary = mm_generic_cdma_get_port (cdma, MM_PORT_TYPE_PRIMARY);
port = primary = mm_generic_cdma_get_port (cdma, MM_PORT_TYPE_PRIMARY);
secondary = mm_generic_cdma_get_port (cdma, MM_PORT_TYPE_SECONDARY);
info = mm_generic_cdma_query_reg_state_callback_info_new (cdma, callback, user_data);
if (mm_port_get_connected (MM_PORT (primary)) && !secondary) {
info->error = g_error_new_literal (MM_MODEM_ERROR, MM_MODEM_ERROR_CONNECTED,
"Cannot get query registration state while connected");
mm_callback_info_schedule (info);
return;
if (mm_port_get_connected (MM_PORT (primary))) {
if (!secondary) {
info->error = g_error_new_literal (MM_MODEM_ERROR, MM_MODEM_ERROR_CONNECTED,
"Cannot get query registration state while connected");
mm_callback_info_schedule (info);
return;
}
/* Use secondary port if primary is connected */
port = secondary;
}
mm_serial_port_queue_command (secondary ? secondary : primary,
"^SYSINFO", 3,
sysinfo_done, info);
mm_serial_port_queue_command (port, "^SYSINFO", 3, sysinfo_done, info);
}
/*****************************************************************************/