aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/mm-modem-huawei.c34
-rw-r--r--plugins/mm-modem-mbm.c29
-rw-r--r--plugins/mm-modem-option.c20
3 files changed, 57 insertions, 26 deletions
diff --git a/plugins/mm-modem-huawei.c b/plugins/mm-modem-huawei.c
index 994169c7..1aebebac 100644
--- a/plugins/mm-modem-huawei.c
+++ b/plugins/mm-modem-huawei.c
@@ -56,13 +56,13 @@ parse_syscfg (MMModemHuawei *self,
/* Network mode */
if (*mode_a == 2 && *mode_b == 1)
- priv->mode = MM_MODEM_GSM_NETWORK_MODE_PREFER_2G;
+ priv->mode = MM_MODEM_GSM_NETWORK_MODE_2G_PREFERRED;
else if (*mode_a == 2 && *mode_b == 2)
- priv->mode = MM_MODEM_GSM_NETWORK_MODE_PREFER_3G;
+ priv->mode = MM_MODEM_GSM_NETWORK_MODE_3G_PREFERRED;
else if (*mode_a == 13 && *mode_b == 1)
- priv->mode = MM_MODEM_GSM_NETWORK_MODE_GPRS;
+ priv->mode = MM_MODEM_GSM_NETWORK_MODE_2G_ONLY;
else if (*mode_a == 14 && *mode_b == 2)
- priv->mode = MM_MODEM_GSM_NETWORK_MODE_3G;
+ priv->mode = MM_MODEM_GSM_NETWORK_MODE_3G_ONLY;
/* Band */
if (*band == 0x3FFFFFFF)
@@ -116,19 +116,23 @@ set_network_mode_get_done (MMSerial *serial,
switch (GPOINTER_TO_UINT (mm_callback_info_get_data (info, "mode"))) {
case MM_MODEM_GSM_NETWORK_MODE_GPRS:
case MM_MODEM_GSM_NETWORK_MODE_EDGE:
+ case MM_MODEM_GSM_NETWORK_MODE_2G_ONLY:
a = 13;
b = 1;
break;
- case MM_MODEM_GSM_NETWORK_MODE_3G:
+ case MM_MODEM_GSM_NETWORK_MODE_UMTS:
case MM_MODEM_GSM_NETWORK_MODE_HSDPA:
+ case MM_MODEM_GSM_NETWORK_MODE_HSUPA:
+ case MM_MODEM_GSM_NETWORK_MODE_HSPA:
+ case MM_MODEM_GSM_NETWORK_MODE_3G_ONLY:
a = 14;
b = 2;
break;
- case MM_MODEM_GSM_NETWORK_MODE_PREFER_2G:
+ case MM_MODEM_GSM_NETWORK_MODE_2G_PREFERRED:
a = 2;
b = 1;
break;
- case MM_MODEM_GSM_NETWORK_MODE_PREFER_3G:
+ case MM_MODEM_GSM_NETWORK_MODE_3G_PREFERRED:
a = 2;
b = 2;
break;
@@ -159,10 +163,14 @@ set_network_mode (MMModemGsmNetwork *modem,
break;
case MM_MODEM_GSM_NETWORK_MODE_GPRS:
case MM_MODEM_GSM_NETWORK_MODE_EDGE:
- case MM_MODEM_GSM_NETWORK_MODE_3G:
+ case MM_MODEM_GSM_NETWORK_MODE_UMTS:
case MM_MODEM_GSM_NETWORK_MODE_HSDPA:
- case MM_MODEM_GSM_NETWORK_MODE_PREFER_2G:
- case MM_MODEM_GSM_NETWORK_MODE_PREFER_3G:
+ case MM_MODEM_GSM_NETWORK_MODE_HSUPA:
+ case MM_MODEM_GSM_NETWORK_MODE_HSPA:
+ case MM_MODEM_GSM_NETWORK_MODE_2G_PREFERRED:
+ case MM_MODEM_GSM_NETWORK_MODE_3G_PREFERRED:
+ case MM_MODEM_GSM_NETWORK_MODE_2G_ONLY:
+ case MM_MODEM_GSM_NETWORK_MODE_3G_ONLY:
/* Allowed values */
mm_callback_info_set_data (info, "mode", GUINT_TO_POINTER (mode), NULL);
mm_serial_queue_command (MM_SERIAL (modem), "AT^SYSCFG?", 3, set_network_mode_get_done, info);
@@ -414,9 +422,13 @@ handle_mode_change (MMSerial *serial,
else if (a == 3 && b == 3)
priv->mode = MM_MODEM_GSM_NETWORK_MODE_EDGE;
else if (a == 5 && b == 4)
- priv->mode = MM_MODEM_GSM_NETWORK_MODE_3G;
+ priv->mode = MM_MODEM_GSM_NETWORK_MODE_UMTS;
else if (a == 5 && b == 5)
priv->mode = MM_MODEM_GSM_NETWORK_MODE_HSDPA;
+ else if (a == 5 && b == 6)
+ priv->mode = MM_MODEM_GSM_NETWORK_MODE_HSUPA;
+ else if (a == 5 && b == 7)
+ priv->mode = MM_MODEM_GSM_NETWORK_MODE_HSPA;
else {
g_warning ("Couldn't parse mode change value: '%s'", str);
return;
diff --git a/plugins/mm-modem-mbm.c b/plugins/mm-modem-mbm.c
index f527894e..e0f03455 100644
--- a/plugins/mm-modem-mbm.c
+++ b/plugins/mm-modem-mbm.c
@@ -258,7 +258,12 @@ enable (MMModem *modem,
static gboolean
parse_erinfo (const char *reply, int *mode, int *gsm_rinfo, int *umts_rinfo)
{
- if (reply == NULL || strncmp (reply, "*ERINFO:", 8))
+ g_return_val_if_fail (reply != NULL, FALSE);
+ g_return_val_if_fail (mode != NULL, FALSE);
+ g_return_val_if_fail (gsm_rinfo != NULL, FALSE);
+ g_return_val_if_fail (umts_rinfo != NULL, FALSE);
+
+ if (strncmp (reply, "*ERINFO:", 8))
return FALSE;
if (sscanf (reply + 8, "%d,%d,%d", mode, gsm_rinfo, umts_rinfo))
@@ -278,20 +283,28 @@ get_network_mode_done (MMSerial *serial,
if (error)
info->error = g_error_copy (error);
else {
- int mode;
- int gsm_rinfo;
- int umts_rinfo;
+ int mode = 0, gsm_rinfo = 0, umts_rinfo = 0;
guint32 result = 0;
if (parse_erinfo (response->str, &mode, &gsm_rinfo, &umts_rinfo)) {
if (umts_rinfo == 2)
result = MM_MODEM_GSM_NETWORK_MODE_HSDPA;
else if (umts_rinfo && !gsm_rinfo)
- result = MM_MODEM_GSM_NETWORK_MODE_3G;
+ result = MM_MODEM_GSM_NETWORK_MODE_UMTS;
else if (umts_rinfo && gsm_rinfo)
- result = MM_MODEM_GSM_NETWORK_MODE_PREFER_3G;
- else if (gsm_rinfo)
- result = MM_MODEM_GSM_NETWORK_MODE_GPRS;
+ result = MM_MODEM_GSM_NETWORK_MODE_3G_PREFERRED;
+ else if (gsm_rinfo) {
+ switch (gsm_rinfo) {
+ case 2:
+ case 3:
+ result = MM_MODEM_GSM_NETWORK_MODE_EDGE;
+ break;
+ case 1:
+ default:
+ result = MM_MODEM_GSM_NETWORK_MODE_GPRS;
+ break;
+ }
+ }
}
if (result == 0)
diff --git a/plugins/mm-modem-option.c b/plugins/mm-modem-option.c
index 8a587908..0c77c892 100644
--- a/plugins/mm-modem-option.c
+++ b/plugins/mm-modem-option.c
@@ -98,16 +98,16 @@ get_network_mode_done (MMSerial *serial,
switch (a) {
case 0:
- mode = MM_MODEM_GSM_NETWORK_MODE_GPRS;
+ mode = MM_MODEM_GSM_NETWORK_MODE_2G_ONLY;
break;
case 1:
- mode = MM_MODEM_GSM_NETWORK_MODE_3G;
+ mode = MM_MODEM_GSM_NETWORK_MODE_3G_ONLY;
break;
case 2:
- mode = MM_MODEM_GSM_NETWORK_MODE_PREFER_2G;
+ mode = MM_MODEM_GSM_NETWORK_MODE_2G_PREFERRED;
break;
case 3:
- mode = MM_MODEM_GSM_NETWORK_MODE_PREFER_3G;
+ mode = MM_MODEM_GSM_NETWORK_MODE_3G_PREFERRED;
break;
default:
break;
@@ -165,15 +165,21 @@ set_network_mode (MMModemGsmNetwork *modem,
switch (mode) {
case MM_MODEM_GSM_NETWORK_MODE_ANY:
case MM_MODEM_GSM_NETWORK_MODE_GPRS:
+ case MM_MODEM_GSM_NETWORK_MODE_EDGE:
+ case MM_MODEM_GSM_NETWORK_MODE_2G_ONLY:
i = 0;
break;
- case MM_MODEM_GSM_NETWORK_MODE_3G:
+ case MM_MODEM_GSM_NETWORK_MODE_UMTS:
+ case MM_MODEM_GSM_NETWORK_MODE_HSDPA:
+ case MM_MODEM_GSM_NETWORK_MODE_HSUPA:
+ case MM_MODEM_GSM_NETWORK_MODE_HSPA:
+ case MM_MODEM_GSM_NETWORK_MODE_3G_ONLY:
i = 1;
break;
- case MM_MODEM_GSM_NETWORK_MODE_PREFER_2G:
+ case MM_MODEM_GSM_NETWORK_MODE_2G_PREFERRED:
i = 2;
break;
- case MM_MODEM_GSM_NETWORK_MODE_PREFER_3G:
+ case MM_MODEM_GSM_NETWORK_MODE_3G_PREFERRED:
i = 3;
break;
default: