aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2011-12-28 09:47:41 +0100
committerAleksander Morgado <aleksander@lanedo.com>2012-02-17 13:25:03 +0100
commitf2af208f05cbf56f8a44478615d70b7da46c3e42 (patch)
tree0a0f38bae3b86349f7cca3c5168b6ecfeffdcf64
parent5371cce11d5391a31272a6e85421e4d2c5bf43f6 (diff)
iridium: don't try to update signal quality if not registered
Seems that launching AT+CSQF when not registered ends up timing out. AT+CSQF is meant to be the fast version to get the signal quality, and is expected to return instantly with the last cached signal quality value. But if we never got registered, there is no such cached value, so it probably waits to get the first one.
-rw-r--r--plugins/mm-modem-iridium-gsm.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/plugins/mm-modem-iridium-gsm.c b/plugins/mm-modem-iridium-gsm.c
index a5c2b0d0..9aa4106c 100644
--- a/plugins/mm-modem-iridium-gsm.c
+++ b/plugins/mm-modem-iridium-gsm.c
@@ -383,6 +383,16 @@ get_signal_quality (MMModemGsmNetwork *modem,
info = mm_callback_info_uint_new (MM_MODEM (modem), callback, user_data);
+ /* If modem is not registered, don't even bother trying to get signal
+ * quality */
+ if (mm_modem_get_state (MM_MODEM (modem)) < MM_MODEM_STATE_REGISTERED) {
+ mm_dbg ("Not getting signal quality, not registered yet");
+ mm_generic_gsm_update_signal_quality (MM_GENERIC_GSM (info->modem), 0);
+ mm_callback_info_set_result (info, GUINT_TO_POINTER (0), NULL);
+ mm_callback_info_schedule (info);
+ return;
+ }
+
/* The iridium modem may have a huge delay to get signal quality if we pass
* AT+CSQ, so we'll default to use AT+CSQF, which is a fast version that
* returns right away the last signal quality value retrieved */