base-manager: new '--test-low-power-suspend-resume' option

Will request to put the modems in low power mode upon system suspend.

Based on an earlier approach from Jack Song and Nero Zhang, see
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1050
This commit is contained in:
Aleksander Morgado
2023-12-12 11:22:30 +00:00
committed by Aleksander Morgado
parent 63dd4ad263
commit bbd11cda4b
5 changed files with 104 additions and 26 deletions
+10 -5
View File
@@ -61,8 +61,13 @@ quit_cb (gpointer user_data)
static void
sleeping_cb (MMSleepMonitor *sleep_monitor)
{
mm_dbg ("removing devices... (sleeping)");
mm_base_manager_shutdown (manager, FALSE);
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);
} else {
mm_dbg ("removing devices... (sleeping)");
mm_base_manager_shutdown (manager, FALSE, FALSE);
}
}
static void
@@ -201,9 +206,9 @@ main (int argc, char *argv[])
{
MMSleepMonitor *sleep_monitor;
if (mm_context_get_test_no_suspend_resume())
if (mm_context_get_test_no_suspend_resume ())
mm_dbg ("Suspend/resume support disabled at runtime");
else if (mm_context_get_test_quick_suspend_resume()) {
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_RESUMING, G_CALLBACK (resuming_quick_cb), NULL);
@@ -228,7 +233,7 @@ main (int argc, char *argv[])
if (manager) {
GTimer *timer;
mm_base_manager_shutdown (manager, TRUE);
mm_base_manager_shutdown (manager, TRUE, FALSE);
/* Wait for all modems to be disabled and removed, but don't wait
* forever: if disabling the modems takes longer than 20s, just