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.
This commit is contained in:
@@ -908,7 +908,7 @@ shutdown_low_power_ready (MMIfaceModem *modem,
|
||||
{
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
if (!mm_iface_modem_set_power_state_finish (modem, res, &error))
|
||||
if (!mm_iface_modem_set_power_state_finish (modem, res, NULL, &error))
|
||||
mm_obj_info (ctx->self, "changing to low power state failed: %s", error->message);
|
||||
|
||||
if (ctx->remove)
|
||||
|
||||
+13
-5
@@ -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;
|
||||
|
||||
@@ -499,13 +499,14 @@ gboolean mm_iface_modem_sync_finish (MMIfaceModem *self,
|
||||
#endif
|
||||
|
||||
/* Allow setting power state */
|
||||
void mm_iface_modem_set_power_state (MMIfaceModem *self,
|
||||
MMModemPowerState power_state,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data);
|
||||
gboolean mm_iface_modem_set_power_state_finish (MMIfaceModem *self,
|
||||
GAsyncResult *res,
|
||||
GError **error);
|
||||
void mm_iface_modem_set_power_state (MMIfaceModem *self,
|
||||
MMModemPowerState power_state,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data);
|
||||
gboolean mm_iface_modem_set_power_state_finish (MMIfaceModem *self,
|
||||
GAsyncResult *res,
|
||||
MMModemPowerState *previous_power_state,
|
||||
GError **error);
|
||||
|
||||
/* Request lock info update.
|
||||
* It will not only return the lock status, but also set the property values
|
||||
|
||||
@@ -196,7 +196,7 @@ after_attach_apn_modem_power_up_ready (MMIfaceModem *self,
|
||||
|
||||
ctx = g_task_get_task_data (task);
|
||||
|
||||
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 to power up modem after attach APN settings update: %s", error->message);
|
||||
if (!ctx->saved_error)
|
||||
ctx->saved_error = g_steal_pointer (&error);
|
||||
@@ -260,7 +260,7 @@ before_attach_apn_modem_power_down_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 to power down modem before attach APN settings update: %s", error->message);
|
||||
g_task_return_error (task, error);
|
||||
g_object_unref (task);
|
||||
|
||||
Reference in New Issue
Block a user