diff options
Diffstat (limited to 'contrib/pm-utils.handler')
-rwxr-xr-x | contrib/pm-utils.handler | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/contrib/pm-utils.handler b/contrib/pm-utils.handler new file mode 100755 index 0000000..f369a6b --- /dev/null +++ b/contrib/pm-utils.handler @@ -0,0 +1,62 @@ +#!/bin/bash + +. /usr/lib/pm-utils/functions + +[[ -f /usr/lib/network/network ]] || exit $NA +. /usr/lib/network/network + +auto_resume() +{ + all_resume + sleep 2 + # if didn't successfully resume wifi, and running net-auto daemon, then restart the daemon + if [[ -f /var/run/daemons/net-auto && -x /usr/bin/netcfg-auto-wireless ]]; then + if ! check_iface "$1" >/dev/null; then # ret=1 when iface down and available + /usr/bin/netcfg-auto-wireless "$1" + fi + fi +} + + +case "$1" in + hibernate|suspend_hybrid|suspend) + report_notify "suspending all interfaces..." + interface_suspend all + ;; + thaw|resume) + if "$CONN_DIR/wireless" query wlan0 enabled; then + report_notify "resuming all interfaces..." + auto_resume wlan0 + else + report_notify "resuming all interfaces except wireless..." + all_resume wlan0 + fi + ;; + radio_off) + report_notify "suspending wireless interface..." + interface_suspend wlan0 no + set_iface disabled wlan0 + bring_interface forcedown wlan0 + ;; + radio_on) + report_notify "resuming wireless interface..." + auto_resume wlan0 + if [ -x /etc/pm/power.d/??wifi ]; then + /usr/bin/on_ac_power # this is in pm-utils + case $? in + 0) # on ac + /etc/pm/power.d/??wifi false + ;; + 1) # on battery + /etc/pm/power.d/??wifi true + ;; + esac + fi + ;; + *) + ;; +esac + +exit $? + +# vim: ft=sh ts=4 et sw=4: |