aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/mm-modem-huawei-cdma.c37
-rw-r--r--plugins/mm-modem-huawei-cdma.h4
-rw-r--r--plugins/mm-plugin-generic.c4
-rw-r--r--plugins/mm-plugin-gobi.c4
-rw-r--r--plugins/mm-plugin-huawei.c4
-rw-r--r--plugins/mm-plugin-nokia.c4
-rw-r--r--plugins/mm-plugin-novatel.c4
-rw-r--r--plugins/mm-plugin-sierra.c4
-rw-r--r--plugins/mm-plugin-zte.c4
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) {