summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniele Palmas <dnlplm@gmail.com>2021-10-25 09:34:04 +0200
committerDaniele Palmas <dnlplm@gmail.com>2021-10-25 16:51:23 +0200
commit1058c1c69dba15bd9fc7cf3da2c191cc29aa1ddb (patch)
tree5067617dbccdcbf55efd6b740480d86186342d51
parent3a02c3187bd0842e7d5ff74509d2051894146b56 (diff)
telit: avoid sim hot swap procedure if #QSS is not supported
-rw-r--r--plugins/telit/mm-broadband-modem-telit.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/plugins/telit/mm-broadband-modem-telit.c b/plugins/telit/mm-broadband-modem-telit.c
index bd92d076..3ffd7cc4 100644
--- a/plugins/telit/mm-broadband-modem-telit.c
+++ b/plugins/telit/mm-broadband-modem-telit.c
@@ -607,6 +607,27 @@ next_step:
}
static void
+telit_qss_support_ready (MMBaseModem *self,
+ GAsyncResult *res,
+ GTask *task)
+{
+ GError *error = NULL;
+ QssSetupContext *ctx;
+
+ ctx = g_task_get_task_data (task);
+
+ if (!mm_base_modem_at_command_finish (self, res, &error)) {
+ mm_obj_dbg (self, "#QSS command unsupported: '%s'", error->message);
+ g_task_return_error (task, error);
+ g_object_unref (task);
+ return;
+ }
+
+ ctx->step++;
+ qss_setup_step (task);
+}
+
+static void
qss_setup_step (GTask *task)
{
QssSetupContext *ctx;
@@ -617,8 +638,13 @@ qss_setup_step (GTask *task)
switch (ctx->step) {
case QSS_SETUP_STEP_FIRST:
- ctx->step++;
- /* fall through */
+ mm_base_modem_at_command (MM_BASE_MODEM (self),
+ "#QSS=?",
+ 3,
+ TRUE,
+ (GAsyncReadyCallback) telit_qss_support_ready,
+ task);
+ return;
case QSS_SETUP_STEP_QUERY:
mm_base_modem_at_command (MM_BASE_MODEM (self),
"#QSS?",