diff options
author | Daniele Palmas <dnlplm@gmail.com> | 2021-10-25 09:34:04 +0200 |
---|---|---|
committer | Daniele Palmas <dnlplm@gmail.com> | 2021-10-25 16:51:23 +0200 |
commit | 1058c1c69dba15bd9fc7cf3da2c191cc29aa1ddb (patch) | |
tree | 5067617dbccdcbf55efd6b740480d86186342d51 | |
parent | 3a02c3187bd0842e7d5ff74509d2051894146b56 (diff) |
telit: avoid sim hot swap procedure if #QSS is not supported
-rw-r--r-- | plugins/telit/mm-broadband-modem-telit.c | 30 |
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?", |