diff options
author | Aleksander Morgado <aleksandermj@chromium.org> | 2024-05-07 10:40:48 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksandermj@chromium.org> | 2024-05-29 08:02:40 +0000 |
commit | c5b9effdc7b8d7dd505c223e742a4e1f25c3fde3 (patch) | |
tree | af9f4abc2c1f6830dbffdf623a385aa492e67b79 /src/mm-iface-modem.c | |
parent | e215f644d6daa0096ac9243704a16e292d998f2a (diff) |
iface-modem: allow reporting the previous power state after an update
Let the caller of mm_iface_modem_set_power_state() know which was the
power state in the device before the actual update happened.
This is useful in cases where we want to temporarily switch to a given
power state (e.g. low) before returning to the original power state.
Diffstat (limited to 'src/mm-iface-modem.c')
-rw-r--r-- | src/mm-iface-modem.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c index 4b2a3553..8d4f5290 100644 --- a/src/mm-iface-modem.c +++ b/src/mm-iface-modem.c @@ -2418,7 +2418,7 @@ set_power_state_ready (MMIfaceModem *self, { GError *error = NULL; - if (!mm_iface_modem_set_power_state_finish (self, res, &error)) { + if (!mm_iface_modem_set_power_state_finish (self, res, NULL, &error)) { mm_obj_warn (self, "failed setting power state '%s': %s", mm_modem_power_state_get_string (ctx->power_state), error->message); if (ctx->disable_after_update) { ctx->saved_error = error; @@ -4152,10 +4152,17 @@ set_power_state_context_free (SetPowerStateContext *ctx) } gboolean -mm_iface_modem_set_power_state_finish (MMIfaceModem *self, - GAsyncResult *res, - GError **error) +mm_iface_modem_set_power_state_finish (MMIfaceModem *self, + GAsyncResult *res, + MMModemPowerState *previous_power_state, + GError **error) { + SetPowerStateContext *ctx; + + ctx = g_task_get_task_data (G_TASK (res)); + if (previous_power_state) + *previous_power_state = ctx->previous_real_power_state; + return g_task_propagate_boolean (G_TASK (res), error); } @@ -4440,6 +4447,7 @@ mm_iface_modem_set_power_state (MMIfaceModem *self, ctx = g_slice_new0 (SetPowerStateContext); ctx->step = SET_POWER_STATE_STEP_FIRST; ctx->requested_power_state = power_state; + ctx->previous_real_power_state = MM_MODEM_POWER_STATE_UNKNOWN; task = g_task_new (self, NULL, callback, user_data); g_task_set_task_data (task, ctx, (GDestroyNotify)set_power_state_context_free); @@ -4562,7 +4570,7 @@ enabling_set_power_state_ready (MMIfaceModem *self, EnablingContext *ctx; GError *error = NULL; - if (!mm_iface_modem_set_power_state_finish (self, res, &error)) { + if (!mm_iface_modem_set_power_state_finish (self, res, NULL, &error)) { g_task_return_error (task, error); g_object_unref (task); return; |