diff options
author | Aleksander Morgado <aleksandermj@chromium.org> | 2022-09-19 10:38:00 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2022-09-27 08:28:07 +0000 |
commit | 1ea5a577e38ebb5393a7b15e59b585acb659cfce (patch) | |
tree | 92f73a9da6944a6424b4a6d51b8b784c43abb6cd /src/mm-broadband-modem-qmi.c | |
parent | 950d36d4ee6c36c606a662a07a877b765c94c11c (diff) |
iface-modem-sar: report updated level on SAR enable
The SAR enable operation may be selecting an explicit SAR level by
itself, so make sure the protocol implementation reports back to the
interface the default level that was used while enabling SAR.
No level change is reported in the interface if the SAR is being
disabled.
Diffstat (limited to 'src/mm-broadband-modem-qmi.c')
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index 8a666fa0..4040b2a6 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -8468,9 +8468,18 @@ sar_load_power_level (MMIfaceModemSar *self, static gboolean sar_enable_finish (MMIfaceModemSar *self, GAsyncResult *res, + guint *out_sar_power_level, GError **error) { - return g_task_propagate_boolean (G_TASK (res), error); + QmiSarRfState level; + + if (!g_task_propagate_boolean (G_TASK (res), error)) + return FALSE; + + level = GPOINTER_TO_UINT (g_task_get_task_data (G_TASK (res))); + if (out_sar_power_level) + *out_sar_power_level = level; + return TRUE; } static void @@ -8499,6 +8508,7 @@ sar_enable (MMIfaceModemSar *self, g_autoptr(QmiMessageSarRfSetStateInput) input = NULL; GTask *task; QmiClient *client = NULL; + QmiSarRfState level; if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self), QMI_SERVICE_SAR, &client, @@ -8507,9 +8517,10 @@ sar_enable (MMIfaceModemSar *self, task = g_task_new (self, NULL, callback, user_data); input = qmi_message_sar_rf_set_state_input_new (); - qmi_message_sar_rf_set_state_input_set_state (input, - enable ? QMI_SAR_ENABLE_POWER_INDEX : QMI_SAR_DISABLED_POWER_INDEX, - NULL); + + level = enable ? QMI_SAR_ENABLE_POWER_INDEX : QMI_SAR_DISABLED_POWER_INDEX; + qmi_message_sar_rf_set_state_input_set_state (input, level, NULL); + g_task_set_task_data (task, GUINT_TO_POINTER (level), NULL); qmi_client_sar_rf_set_state ( QMI_CLIENT_SAR (client), |