diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 20 |
1 files changed, 15 insertions, 5 deletions
@@ -62,7 +62,14 @@ static void sleeping_cb (MMSleepMonitor *sleep_monitor) { mm_dbg ("removing devices... (sleeping)"); - mm_base_manager_shutdown (manager, FALSE); + mm_base_manager_shutdown (manager, FALSE, FALSE); +} + +static void +sleeping_low_power_cb (MMSleepMonitor *sleep_monitor) +{ + mm_dbg ("removing devices and setting low power mode... (sleeping)"); + mm_base_manager_shutdown (manager, TRUE, TRUE); } static void @@ -201,16 +208,19 @@ 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); } else { mm_dbg ("Full suspend/resume hooks enabled"); sleep_monitor = mm_sleep_monitor_get (); - g_signal_connect (sleep_monitor, MM_SLEEP_MONITOR_SLEEPING, G_CALLBACK (sleeping_cb), NULL); + if (mm_context_get_test_radio_off_suspend_resume ()) + g_signal_connect (sleep_monitor, MM_SLEEP_MONITOR_SLEEPING, G_CALLBACK (sleeping_low_power_cb), NULL); + else + g_signal_connect (sleep_monitor, MM_SLEEP_MONITOR_SLEEPING, G_CALLBACK (sleeping_cb), NULL); g_signal_connect (sleep_monitor, MM_SLEEP_MONITOR_RESUMING, G_CALLBACK (resuming_cb), NULL); } } @@ -228,7 +238,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 |