diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index 4040b2a6..f513d0a5 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -8518,7 +8518,15 @@ sar_enable (MMIfaceModemSar *self, task = g_task_new (self, NULL, callback, user_data); input = qmi_message_sar_rf_set_state_input_new (); - level = enable ? QMI_SAR_ENABLE_POWER_INDEX : QMI_SAR_DISABLED_POWER_INDEX; + /* When enabling, try to set the last valid known power level used, instead + * of defaulting to level 1 */ + if (enable) { + level = mm_iface_modem_sar_get_power_level (self); + if (level == QMI_SAR_DISABLED_POWER_INDEX) + level = QMI_SAR_ENABLE_POWER_INDEX; + } else + level = 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); |