I'm using Onlinescreensaver on my Kindle Touch (K5), and spent good amount of time getting it to wake up from suspend.
Here is the code I ended up with:
Code:
# runs when in the readyToSuspend state;
# sets the rtc to wake up
# arguments: $1 - amount of seconds to wake up in
set_rtc_wakeup()
{
lipc-set-prop -i com.lab126.powerd rtcWakeup $1 2>&1
logger "rtcWakeup has been set to $1"
}
##############################################################################
# sets an RTC alarm
# arguments: $1 - time in seconds from now
wait_for () {
ENDWAIT=$(( $(currentTime) + $1 ))
REMAININGWAITTIME=$(( $ENDWAIT - $(currentTime) ))
logger "Starting to wait for timeout to expire: $1"
# wait for timeout to expire
while [ $REMAININGWAITTIME -gt 0 ]; do
EVENT=$(lipc-wait-event -s $1 com.lab126.powerd readyToSuspend,wakeupFromSuspend,resuming)
REMAININGWAITTIME=$(( $ENDWAIT - $(currentTime) ))
logger "Received event: $EVENT"
case "$EVENT" in
readyToSuspend*)
set_rtc_wakeup $REMAININGWAITTIME
;;
wakeupFromSuspend*|resuming*)
logger "Finishing the wait"
break
;;
*)
logger "Ignored event: $EVENT"
;;
esac
done
logger "Wait finished"
}
Hope it helps someone