From 678f07a1e28e0b7bb74319418c215e9e5ed9b8bb Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Fri, 30 Oct 2009 16:16:36 -0700 Subject: gobi: don't override generic init commands The default ones seem to work just fine. --- plugins/mm-modem-gobi-gsm.c | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/plugins/mm-modem-gobi-gsm.c b/plugins/mm-modem-gobi-gsm.c index 8b8370ca..7ea9f8f4 100644 --- a/plugins/mm-modem-gobi-gsm.c +++ b/plugins/mm-modem-gobi-gsm.c @@ -102,40 +102,8 @@ mm_modem_gobi_gsm_init (MMModemGobiGsm *self) { } -static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) -{ - - /* These devices just don't implement AT+CFUN */ - - switch (prop_id) { - case MM_GENERIC_GSM_PROP_INIT_CMD: - g_value_set_string (value, "Z E0 V1 +CMEE=1"); - break; - default: - break; - } -} - -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ -} - static void mm_modem_gobi_gsm_class_init (MMModemGobiGsmClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - mm_modem_gobi_gsm_parent_class = g_type_class_peek_parent (klass); - - object_class->get_property = get_property; - object_class->set_property = set_property; - - g_object_class_override_property (object_class, - MM_GENERIC_GSM_PROP_INIT_CMD, - MM_GENERIC_GSM_INIT_CMD); } -- cgit v1.2.3-70-g09d2 From 54901933fea26d17ec7fac5e326f6478770b059d Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Fri, 30 Oct 2009 16:55:04 -0700 Subject: gsm: make "X4 &C1" init arguments optional (lp:455031) At least don't error out of the fail since they aren't really necessary, just nice to have. --- src/mm-generic-gsm.c | 18 +++++++++++++++++- src/mm-generic-gsm.h | 10 +++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c index 169fca8a..6064fdbe 100644 --- a/src/mm-generic-gsm.c +++ b/src/mm-generic-gsm.c @@ -369,6 +369,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 @@ -1886,6 +1890,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; @@ -1925,7 +1930,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); @@ -2005,5 +2013,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 ac2ce365..7cfd6253 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; -- cgit v1.2.3-70-g09d2 From 07cf870937c981e9c7ac8e9937839a103c1c951e Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Fri, 30 Oct 2009 16:55:56 -0700 Subject: gsm: give a network scan 2 minutes instead of 1 On many modems that support 7 or more bands (quad-band 2G, tri-band or more for 3G) scans take quite a while. --- src/mm-generic-gsm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c index 6064fdbe..111804f5 100644 --- a/src/mm-generic-gsm.c +++ b/src/mm-generic-gsm.c @@ -1282,7 +1282,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 */ -- cgit v1.2.3-70-g09d2 From 122aa62afabab2636691ba338508c9ab7da2ff2b Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Fri, 30 Oct 2009 17:11:22 -0700 Subject: trivial: spacing fix --- src/mm-generic-cdma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mm-generic-cdma.c b/src/mm-generic-cdma.c index b113ddc6..e07c81e9 100644 --- a/src/mm-generic-cdma.c +++ b/src/mm-generic-cdma.c @@ -644,7 +644,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); -- cgit v1.2.3-70-g09d2 From 107f950a9e93735fa3ef03f7a522f08f56570f19 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Fri, 30 Oct 2009 17:11:31 -0700 Subject: gsm: tighter signal strength validation The standard dictates CSQ response strength value to be [0 - 31] inclusive, and 99 means "unknown" or "no service". Make that apparent and don't treat 99 as 99% which it clearly isn't. Also, allow spaces in the CSQ response. --- src/mm-generic-gsm.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c index 111804f5..f08097f6 100644 --- a/src/mm-generic-gsm.c +++ b/src/mm-generic-gsm.c @@ -1476,15 +1476,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"); -- cgit v1.2.3-70-g09d2 From 74f679acdb8caa15c59b6b84b6a117a144426720 Mon Sep 17 00:00:00 2001 From: Torgny Johansson Date: Wed, 4 Nov 2009 13:11:23 -0800 Subject: mbm: add USB IDs for C3607w --- plugins/77-mm-ericsson-mbm.rules | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/77-mm-ericsson-mbm.rules b/plugins/77-mm-ericsson-mbm.rules index be1579d1..71dc6b87 100644 --- a/plugins/77-mm-ericsson-mbm.rules +++ b/plugins/77-mm-ericsson-mbm.rules @@ -17,6 +17,9 @@ ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1906", ENV{ID_MM_ERICSSON_MBM}="1" ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="190a", ENV{ID_MM_ERICSSON_MBM}="1" ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1909", ENV{ID_MM_ERICSSON_MBM}="1" +# Ericsson C3607w +ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1049", ENV{ID_MM_ERICSSON_MBM}="1" + # Sony-Ericsson MD300 ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="d0cf", ENV{ID_MM_ERICSSON_MBM}="1" -- cgit v1.2.3-70-g09d2