cdma: simplify finding the right serial port for commands

This commit is contained in:
Dan Williams
2010-03-16 17:03:55 -07:00
parent 6266f949ba
commit 79bca53f21
6 changed files with 92 additions and 126 deletions
+5 -14
View File
@@ -274,23 +274,14 @@ query_registration_state (MMGenericCdma *cdma,
gpointer user_data)
{
MMCallbackInfo *info;
MMAtSerialPort *primary, *secondary, *port;
port = primary = mm_generic_cdma_get_at_port (cdma, MM_PORT_TYPE_PRIMARY);
secondary = mm_generic_cdma_get_at_port (cdma, MM_PORT_TYPE_SECONDARY);
MMAtSerialPort *port;
info = mm_generic_cdma_query_reg_state_callback_info_new (cdma, callback, user_data);
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;
port = mm_generic_cdma_get_best_at_port (cdma, &info->error);
if (!port) {
mm_callback_info_schedule (info);
return;
}
mm_at_serial_port_queue_command (port, "*STATE?", 3, state_done, info);
+5 -14
View File
@@ -239,23 +239,14 @@ query_registration_state (MMGenericCdma *cdma,
gpointer user_data)
{
MMCallbackInfo *info;
MMAtSerialPort *primary, *secondary, *port;
port = primary = mm_generic_cdma_get_at_port (cdma, MM_PORT_TYPE_PRIMARY);
secondary = mm_generic_cdma_get_at_port (cdma, MM_PORT_TYPE_SECONDARY);
MMAtSerialPort *port;
info = mm_generic_cdma_query_reg_state_callback_info_new (cdma, callback, user_data);
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;
port = mm_generic_cdma_get_best_at_port (cdma, &info->error);
if (!port) {
mm_callback_info_schedule (info);
return;
}
mm_at_serial_port_queue_command (port, "^SYSINFO", 3, sysinfo_done, info);
+5 -15
View File
@@ -141,25 +141,15 @@ get_signal_quality (MMModemCdma *modem,
MMModemUIntFn callback,
gpointer user_data)
{
MMGenericCdma *cdma = MM_GENERIC_CDMA (modem);
MMCallbackInfo *info;
MMAtSerialPort *primary, *secondary, *port;
port = primary = mm_generic_cdma_get_at_port (cdma, MM_PORT_TYPE_PRIMARY);
secondary = mm_generic_cdma_get_at_port (cdma, MM_PORT_TYPE_SECONDARY);
MMAtSerialPort *port;
info = mm_callback_info_uint_new (MM_MODEM (modem), callback, user_data);
if (mm_port_get_connected (MM_PORT (primary))) {
if (!secondary) {
info->error = g_error_new_literal (MM_MODEM_ERROR, MM_MODEM_ERROR_CONNECTED,
"Cannot query signal quality while connected");
mm_callback_info_schedule (info);
return;
}
/* Use secondary port if primary is connected */
port = secondary;
port = mm_generic_cdma_get_best_at_port (MM_GENERIC_CDMA (modem), &info->error);
if (!port) {
mm_callback_info_schedule (info);
return;
}
/* Many Novatel CDMA cards don't report CSQ in standard 0 - 31 and the CSQ
+4 -14
View File
@@ -293,24 +293,14 @@ query_registration_state (MMGenericCdma *cdma,
gpointer user_data)
{
MMCallbackInfo *info;
MMAtSerialPort *primary, *secondary;
MMAtSerialPort *port;
port = primary = mm_generic_cdma_get_at_port (cdma, MM_PORT_TYPE_PRIMARY);
secondary = mm_generic_cdma_get_at_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))) {
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;
port = mm_generic_cdma_get_best_at_port (cdma, &info->error);
if (!port) {
mm_callback_info_schedule (info);
return;
}
mm_at_serial_port_queue_command (port, "!STATUS", 3, status_done, info);