diff options
author | Aleksander Morgado <aleksandermj@chromium.org> | 2023-12-01 13:19:01 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2023-12-12 11:22:30 +0000 |
commit | c592cde3f0e09a1538ec062dfdeff20f8a10ea88 (patch) | |
tree | bbd4bd222644d7581ac88a39ae2d56ce84b02169 /src/main.c | |
parent | bbd11cda4b9d4d3ec3b96ed563fdbab07cc4e5c2 (diff) |
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.
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 16 |
1 files changed, 13 insertions, 3 deletions
@@ -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); } } @@ -78,6 +78,15 @@ resuming_cb (MMSleepMonitor *sleep_monitor) } 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) { mm_dbg ("syncing modem state (quick resuming)"); @@ -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 |