diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/mm-modem-huawei-cdma.c | 37 | ||||
-rw-r--r-- | plugins/mm-modem-huawei-cdma.h | 4 | ||||
-rw-r--r-- | plugins/mm-plugin-generic.c | 4 | ||||
-rw-r--r-- | plugins/mm-plugin-gobi.c | 4 | ||||
-rw-r--r-- | plugins/mm-plugin-huawei.c | 4 | ||||
-rw-r--r-- | plugins/mm-plugin-nokia.c | 4 | ||||
-rw-r--r-- | plugins/mm-plugin-novatel.c | 4 | ||||
-rw-r--r-- | plugins/mm-plugin-sierra.c | 4 | ||||
-rw-r--r-- | plugins/mm-plugin-zte.c | 4 |
9 files changed, 50 insertions, 19 deletions
diff --git a/plugins/mm-modem-huawei-cdma.c b/plugins/mm-modem-huawei-cdma.c index 372360b4..0289b6f1 100644 --- a/plugins/mm-modem-huawei-cdma.c +++ b/plugins/mm-modem-huawei-cdma.c @@ -38,7 +38,9 @@ typedef struct { MMModem * mm_modem_huawei_cdma_new (const char *device, const char *driver, - const char *plugin) + const char *plugin, + gboolean evdo_rev0, + gboolean evdo_revA) { g_return_val_if_fail (device != NULL, NULL); g_return_val_if_fail (driver != NULL, NULL); @@ -48,6 +50,8 @@ mm_modem_huawei_cdma_new (const char *device, MM_MODEM_MASTER_DEVICE, device, MM_MODEM_DRIVER, driver, MM_MODEM_PLUGIN, plugin, + MM_GENERIC_CDMA_EVDO_REV0, evdo_rev0, + MM_GENERIC_CDMA_EVDO_REVA, evdo_revA, NULL)); } @@ -159,9 +163,21 @@ sysinfo_done (MMSerialPort *port, } } - /* FIXME: Parse sysmode */ - - mm_callback_info_set_result (info, GUINT_TO_POINTER (reg_state), NULL); + /* Check service type */ + val = 0; + if (uint_from_match_item (match_info, 4, &val)) { + if (val == 2) + mm_generic_cdma_query_reg_state_set_callback_1x_state (info, reg_state); + else if (val == 4) + mm_generic_cdma_query_reg_state_set_callback_evdo_state (info, reg_state); + else if (val == 8) { + mm_generic_cdma_query_reg_state_set_callback_1x_state (info, reg_state); + mm_generic_cdma_query_reg_state_set_callback_evdo_state (info, reg_state); + } + } else { + /* Say we're registered to something even though sysmode parsing failed */ + mm_generic_cdma_query_reg_state_set_callback_1x_state (info, reg_state); + } success = TRUE; } @@ -180,25 +196,24 @@ done: static void query_registration_state (MMGenericCdma *cdma, - MMModemUIntFn callback, + MMModemCdmaRegistrationStateFn callback, gpointer user_data) { MMCallbackInfo *info; MMSerialPort *primary, *secondary; - GError *error; 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) { - error = g_error_new_literal (MM_MODEM_ERROR, MM_MODEM_ERROR_CONNECTED, - "Cannot get query registration state while connected"); - callback (MM_MODEM (cdma), MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN, error, user_data); - g_error_free (error); + 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; } - info = mm_callback_info_uint_new (MM_MODEM (cdma), callback, user_data); mm_serial_port_queue_command (secondary ? secondary : primary, "AT^SYSINFO", 3, sysinfo_done, info); diff --git a/plugins/mm-modem-huawei-cdma.h b/plugins/mm-modem-huawei-cdma.h index 04cf0c2a..738f2d9e 100644 --- a/plugins/mm-modem-huawei-cdma.h +++ b/plugins/mm-modem-huawei-cdma.h @@ -38,6 +38,8 @@ GType mm_modem_huawei_cdma_get_type (void); MMModem *mm_modem_huawei_cdma_new (const char *device, const char *driver, - const char *plugin); + const char *plugin, + gboolean evdo_rev0, + gboolean evdo_revA); #endif /* MM_MODEM_HUAWEI_CDMA_H */ diff --git a/plugins/mm-plugin-generic.c b/plugins/mm-plugin-generic.c index 3b6cd198..e5e2ade8 100644 --- a/plugins/mm-plugin-generic.c +++ b/plugins/mm-plugin-generic.c @@ -148,7 +148,9 @@ grab_port (MMPluginBase *base, } else if (caps & CAP_CDMA) { modem = mm_generic_cdma_new (sysfs_path, mm_plugin_base_supports_task_get_driver (task), - mm_plugin_get_name (MM_PLUGIN (base))); + mm_plugin_get_name (MM_PLUGIN (base)), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856_A)); } if (modem) { diff --git a/plugins/mm-plugin-gobi.c b/plugins/mm-plugin-gobi.c index 6c24cec4..77da9652 100644 --- a/plugins/mm-plugin-gobi.c +++ b/plugins/mm-plugin-gobi.c @@ -130,7 +130,9 @@ grab_port (MMPluginBase *base, } else if (caps & CAP_CDMA) { modem = mm_generic_cdma_new (sysfs_path, mm_plugin_base_supports_task_get_driver (task), - mm_plugin_get_name (MM_PLUGIN (base))); + mm_plugin_get_name (MM_PLUGIN (base)), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856_A)); } if (modem) { diff --git a/plugins/mm-plugin-huawei.c b/plugins/mm-plugin-huawei.c index bfd4bf43..b8d8424b 100644 --- a/plugins/mm-plugin-huawei.c +++ b/plugins/mm-plugin-huawei.c @@ -295,7 +295,9 @@ grab_port (MMPluginBase *base, } else if (caps & CAP_CDMA) { modem = mm_modem_huawei_cdma_new (sysfs_path, mm_plugin_base_supports_task_get_driver (task), - mm_plugin_get_name (MM_PLUGIN (base))); + mm_plugin_get_name (MM_PLUGIN (base)), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856_A)); } if (modem) { diff --git a/plugins/mm-plugin-nokia.c b/plugins/mm-plugin-nokia.c index 3e4757c0..e0883236 100644 --- a/plugins/mm-plugin-nokia.c +++ b/plugins/mm-plugin-nokia.c @@ -139,7 +139,9 @@ grab_port (MMPluginBase *base, } else if (caps & CAP_CDMA) { modem = mm_generic_cdma_new (sysfs_path, mm_plugin_base_supports_task_get_driver (task), - mm_plugin_get_name (MM_PLUGIN (base))); + mm_plugin_get_name (MM_PLUGIN (base)), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856_A)); } if (modem) { diff --git a/plugins/mm-plugin-novatel.c b/plugins/mm-plugin-novatel.c index d1f45f59..48ff7ec7 100644 --- a/plugins/mm-plugin-novatel.c +++ b/plugins/mm-plugin-novatel.c @@ -143,7 +143,9 @@ grab_port (MMPluginBase *base, } else if (caps & CAP_CDMA) { modem = mm_generic_cdma_new (sysfs_path, mm_plugin_base_supports_task_get_driver (task), - mm_plugin_get_name (MM_PLUGIN (base))); + mm_plugin_get_name (MM_PLUGIN (base)), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856_A)); } if (modem) { diff --git a/plugins/mm-plugin-sierra.c b/plugins/mm-plugin-sierra.c index c9c0c654..3a1a182b 100644 --- a/plugins/mm-plugin-sierra.c +++ b/plugins/mm-plugin-sierra.c @@ -162,7 +162,9 @@ grab_port (MMPluginBase *base, } else if (caps & CAP_CDMA) { modem = mm_generic_cdma_new (sysfs_path, mm_plugin_base_supports_task_get_driver (task), - mm_plugin_get_name (MM_PLUGIN (base))); + mm_plugin_get_name (MM_PLUGIN (base)), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856_A)); } if (modem) { diff --git a/plugins/mm-plugin-zte.c b/plugins/mm-plugin-zte.c index 08493dca..60a40a97 100644 --- a/plugins/mm-plugin-zte.c +++ b/plugins/mm-plugin-zte.c @@ -140,7 +140,9 @@ grab_port (MMPluginBase *base, } else if (caps & CAP_CDMA) { modem = mm_generic_cdma_new (sysfs_path, mm_plugin_base_supports_task_get_driver (task), - mm_plugin_get_name (MM_PLUGIN (base))); + mm_plugin_get_name (MM_PLUGIN (base)), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856), + !!(caps & MM_PLUGIN_BASE_PORT_CAP_IS856_A)); } if (modem) { |