aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mm-base-manager.c2
-rw-r--r--src/mm-iface-modem.c18
-rw-r--r--src/mm-iface-modem.h15
-rw-r--r--src/plugins/fibocom/mm-shared-fibocom.c4
4 files changed, 24 insertions, 15 deletions
diff --git a/src/mm-base-manager.c b/src/mm-base-manager.c
index b928820e..7e0dcdff 100644
--- a/src/mm-base-manager.c
+++ b/src/mm-base-manager.c
@@ -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)
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;
diff --git a/src/mm-iface-modem.h b/src/mm-iface-modem.h
index 11df05bb..6a82fa26 100644
--- a/src/mm-iface-modem.h
+++ b/src/mm-iface-modem.h
@@ -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
diff --git a/src/plugins/fibocom/mm-shared-fibocom.c b/src/plugins/fibocom/mm-shared-fibocom.c
index ff7974b0..bbf6cb46 100644
--- a/src/plugins/fibocom/mm-shared-fibocom.c
+++ b/src/plugins/fibocom/mm-shared-fibocom.c
@@ -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);