aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/telit/mm-broadband-modem-mbim-telit.c28
-rw-r--r--src/plugins/telit/tests/test-mm-modem-helpers-telit.c1
2 files changed, 27 insertions, 2 deletions
diff --git a/src/plugins/telit/mm-broadband-modem-mbim-telit.c b/src/plugins/telit/mm-broadband-modem-mbim-telit.c
index 8437c841..d14dd94a 100644
--- a/src/plugins/telit/mm-broadband-modem-mbim-telit.c
+++ b/src/plugins/telit/mm-broadband-modem-mbim-telit.c
@@ -141,15 +141,16 @@ load_revision_finish (MMIfaceModem *self,
}
static void
-parent_load_revision_ready (MMIfaceModem *self,
+load_revision_ready_shared (MMIfaceModem *self,
GAsyncResult *res,
GTask *task)
{
GError *error = NULL;
gchar *revision = NULL;
- revision = iface_modem_parent->load_revision_finish (self, res, &error);
+ revision = mm_shared_telit_modem_load_revision_finish (self, res, &error);
if (!revision) {
+ /* give up */
g_task_return_error (task, error);
g_object_unref (task);
return;
@@ -160,6 +161,29 @@ parent_load_revision_ready (MMIfaceModem *self,
}
static void
+parent_load_revision_ready (MMIfaceModem *self,
+ GAsyncResult *res,
+ GTask *task)
+{
+ gchar *revision = NULL;
+
+ revision = iface_modem_parent->load_revision_finish (self, res, NULL);
+ if (!revision || !strlen (revision)) {
+ /* Some firmware versions do not properly populate the revision in the
+ * MBIM response, so try using the AT ports */
+ g_free (revision);
+ mm_shared_telit_modem_load_revision (
+ self,
+ (GAsyncReadyCallback)load_revision_ready_shared,
+ task);
+ return;
+ }
+ mm_shared_telit_store_revision (MM_SHARED_TELIT (self), revision);
+ g_task_return_pointer (task, revision, g_free);
+ g_object_unref (task);
+}
+
+static void
load_revision (MMIfaceModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
diff --git a/src/plugins/telit/tests/test-mm-modem-helpers-telit.c b/src/plugins/telit/tests/test-mm-modem-helpers-telit.c
index e14ba6ba..b17a01f7 100644
--- a/src/plugins/telit/tests/test-mm-modem-helpers-telit.c
+++ b/src/plugins/telit/tests/test-mm-modem-helpers-telit.c
@@ -633,6 +633,7 @@ test_telit_parse_swpkgv_response (void)
{"\r\n16.38.571-P0F.224700\r\nM0F.223004-B001\r\nP0F.224700\r\nA0F.223004-B001\r\n\r\nOK\r\n", "16.38.571-P0F.224700"},
/* real example from LE910C1-EUX */
{"\r\n25.30.224-B001-P0F.224700\r\nM0F.223004-B001\r\nP0F.224700\r\nA0F.223004-B001\r\n\r\nOK\r\n", "25.30.224-B001-P0F.224700"},
+ {"\r\n45.00.010-B022-P0R.001600\r\nM0R.010000-B022\r\nP0R.001600\r\nA0R.000000-B022\r\n\r\nOK\r\n", "45.00.010-B022-P0R.001600"},
};
guint i;