base-manager: allow using the low power modem setting with quick suspend/resume

Kind of defeats the purpose of the quick suspend/resume, but I can see
how this could be useful.

E.g. in ChromeOS the modems are put in low power mode during suspend
(triggered by the connection manager) and the quick suspend/resume is
also enabled by default for a quicker resume process that doesn't
involve full modem reprobe.
This commit is contained in:
Aleksander Morgado
2023-12-12 11:22:30 +00:00
committed by Aleksander Morgado
parent bbd11cda4b
commit c592cde3f0
3 changed files with 33 additions and 9 deletions
+13 -3
View File
@@ -63,10 +63,10 @@ sleeping_cb (MMSleepMonitor *sleep_monitor)
{
if (mm_context_get_test_low_power_suspend_resume ()) {
mm_dbg ("removing devices and setting them in low power mode... (sleeping)");
mm_base_manager_shutdown (manager, TRUE, TRUE);
mm_base_manager_shutdown (manager, TRUE, TRUE, TRUE);
} else {
mm_dbg ("removing devices... (sleeping)");
mm_base_manager_shutdown (manager, FALSE, FALSE);
mm_base_manager_shutdown (manager, FALSE, FALSE, TRUE);
}
}
@@ -77,6 +77,15 @@ resuming_cb (MMSleepMonitor *sleep_monitor)
mm_base_manager_start (manager, FALSE);
}
static void
sleeping_quick_cb (MMSleepMonitor *sleep_monitor)
{
if (mm_context_get_test_low_power_suspend_resume ()) {
mm_dbg ("setting modem in low power mode... (sleeping)");
mm_base_manager_shutdown (manager, TRUE, TRUE, FALSE);
}
}
static void
resuming_quick_cb (MMSleepMonitor *sleep_monitor)
{
@@ -211,6 +220,7 @@ main (int argc, char *argv[])
else if (mm_context_get_test_quick_suspend_resume ()) {
mm_dbg ("Quick suspend/resume hooks enabled");
sleep_monitor = mm_sleep_monitor_get ();
g_signal_connect (sleep_monitor, MM_SLEEP_MONITOR_SLEEPING, G_CALLBACK (sleeping_quick_cb), NULL);
g_signal_connect (sleep_monitor, MM_SLEEP_MONITOR_RESUMING, G_CALLBACK (resuming_quick_cb), NULL);
} else {
mm_dbg ("Full suspend/resume hooks enabled");
@@ -233,7 +243,7 @@ main (int argc, char *argv[])
if (manager) {
GTimer *timer;
mm_base_manager_shutdown (manager, TRUE, FALSE);
mm_base_manager_shutdown (manager, TRUE, FALSE, TRUE);
/* Wait for all modems to be disabled and removed, but don't wait
* forever: if disabling the modems takes longer than 20s, just