aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2009-11-06 15:11:01 -0800
committerDan Williams <dcbw@redhat.com>2009-11-06 15:11:01 -0800
commit3c6e4056e7cded28e612a76d9321f54fb1b51ce2 (patch)
treeed971fb124232775b1f5c92b04a78209b164bba6 /src
parent9bbc6ab53b14097c510548dde4818a596e551617 (diff)
parent74f679acdb8caa15c59b6b84b6a117a144426720 (diff)
Merge commit 'origin/master' into states
Diffstat (limited to 'src')
-rw-r--r--src/mm-generic-cdma.c2
-rw-r--r--src/mm-generic-gsm.c37
-rw-r--r--src/mm-generic-gsm.h10
3 files changed, 35 insertions, 14 deletions
diff --git a/src/mm-generic-cdma.c b/src/mm-generic-cdma.c
index 2ca395c0..0653e708 100644
--- a/src/mm-generic-cdma.c
+++ b/src/mm-generic-cdma.c
@@ -669,7 +669,7 @@ get_signal_quality_done (MMSerialPort *port,
} else {
/* Normalize the quality */
quality = CLAMP (quality, 0, 31) * 100 / 31;
-
+
priv = MM_GENERIC_CDMA_GET_PRIVATE (info->modem);
priv->signal_quality = quality;
mm_callback_info_set_result (info, GUINT_TO_POINTER (quality), NULL);
diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c
index 840a5ab0..eb712aba 100644
--- a/src/mm-generic-gsm.c
+++ b/src/mm-generic-gsm.c
@@ -397,6 +397,10 @@ init_done (MMSerialPort *port,
*/
mm_serial_port_queue_command (port, "E0 +CMEE=1", 2, NULL, NULL);
+ g_object_get (G_OBJECT (info->modem), MM_GENERIC_GSM_INIT_CMD_OPTIONAL, &cmd, NULL);
+ mm_serial_port_queue_command (port, cmd, 2, NULL, NULL);
+ g_free (cmd);
+
if (MM_GENERIC_GSM_GET_PRIVATE (info->modem)->unsolicited_registration)
mm_serial_port_queue_command (port, "+CREG=1", 5, NULL, NULL);
else
@@ -1311,7 +1315,7 @@ scan (MMModemGsmNetwork *modem,
G_CALLBACK (callback),
user_data);
- mm_serial_port_queue_command (priv->primary, "+COPS=?", 60, scan_done, info);
+ mm_serial_port_queue_command (priv->primary, "+COPS=?", 120, scan_done, info);
}
/* SetApn */
@@ -1505,15 +1509,20 @@ get_signal_quality_done (MMSerialPort *port,
reply += 6;
- if (sscanf (reply, "%d,%d", &quality, &ber)) {
+ if (sscanf (reply, "%d, %d", &quality, &ber)) {
/* 99 means unknown */
- if (quality != 99)
+ if (quality == 99) {
+ info->error = g_error_new_literal (MM_MOBILE_ERROR,
+ MM_MOBILE_ERROR_NO_NETWORK,
+ "No service");
+ } else {
/* Normalize the quality */
- quality = quality * 100 / 31;
+ quality = CLAMP (quality, 0, 31) * 100 / 31;
- priv = MM_GENERIC_GSM_GET_PRIVATE (info->modem);
- priv->signal_quality = quality;
- mm_callback_info_set_result (info, GUINT_TO_POINTER (quality), NULL);
+ priv = MM_GENERIC_GSM_GET_PRIVATE (info->modem);
+ priv->signal_quality = quality;
+ mm_callback_info_set_result (info, GUINT_TO_POINTER (quality), NULL);
+ }
} else
info->error = g_error_new_literal (MM_MODEM_ERROR, MM_MODEM_ERROR_GENERAL,
"Could not parse signal quality results");
@@ -1919,6 +1928,7 @@ set_property (GObject *object, guint prop_id,
case MM_GENERIC_GSM_PROP_POWER_UP_CMD:
case MM_GENERIC_GSM_PROP_POWER_DOWN_CMD:
case MM_GENERIC_GSM_PROP_INIT_CMD:
+ case MM_GENERIC_GSM_PROP_INIT_CMD_OPTIONAL:
case MM_GENERIC_GSM_PROP_SUPPORTED_BANDS:
case MM_GENERIC_GSM_PROP_SUPPORTED_MODES:
break;
@@ -1958,7 +1968,10 @@ get_property (GObject *object, guint prop_id,
g_value_set_string (value, "");
break;
case MM_GENERIC_GSM_PROP_INIT_CMD:
- g_value_set_string (value, "Z E0 V1 X4 &C1 +CMEE=1");
+ g_value_set_string (value, "Z E0 V1 +CMEE=1");
+ break;
+ case MM_GENERIC_GSM_PROP_INIT_CMD_OPTIONAL:
+ g_value_set_string (value, "X4 &C1");
break;
case MM_GENERIC_GSM_PROP_SUPPORTED_BANDS:
g_value_set_uint (value, 0);
@@ -2038,5 +2051,13 @@ mm_generic_gsm_class_init (MMGenericGsmClass *klass)
"Initialization command",
NULL,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+ g_object_class_install_property
+ (object_class, MM_GENERIC_GSM_PROP_INIT_CMD_OPTIONAL,
+ g_param_spec_string (MM_GENERIC_GSM_INIT_CMD_OPTIONAL,
+ "InitCommandOptional",
+ "Optional initialization command (errors ignored)",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
}
diff --git a/src/mm-generic-gsm.h b/src/mm-generic-gsm.h
index 9788bad7..af71b17b 100644
--- a/src/mm-generic-gsm.h
+++ b/src/mm-generic-gsm.h
@@ -29,9 +29,10 @@
#define MM_IS_GENERIC_GSM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MM_TYPE_GENERIC_GSM))
#define MM_GENERIC_GSM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_GENERIC_GSM, MMGenericGsmClass))
-#define MM_GENERIC_GSM_POWER_UP_CMD "power-up-cmd"
-#define MM_GENERIC_GSM_POWER_DOWN_CMD "power-down-cmd"
-#define MM_GENERIC_GSM_INIT_CMD "init-cmd"
+#define MM_GENERIC_GSM_POWER_UP_CMD "power-up-cmd"
+#define MM_GENERIC_GSM_POWER_DOWN_CMD "power-down-cmd"
+#define MM_GENERIC_GSM_INIT_CMD "init-cmd"
+#define MM_GENERIC_GSM_INIT_CMD_OPTIONAL "init-cmd-optional"
typedef enum {
MM_GENERIC_GSM_PROP_FIRST = 0x2000,
@@ -41,8 +42,7 @@ typedef enum {
MM_GENERIC_GSM_PROP_INIT_CMD,
MM_GENERIC_GSM_PROP_SUPPORTED_BANDS,
MM_GENERIC_GSM_PROP_SUPPORTED_MODES,
-
- MM_GENERIC_GSM_LAST_PROP = MM_GENERIC_GSM_PROP_INIT_CMD
+ MM_GENERIC_GSM_PROP_INIT_CMD_OPTIONAL
} MMGenericGsmProp;