#!/bin/bash RESULT_DIR=/userdata/cfg/rockchip-test/ RESULT_LOG=${RESULT_DIR}/suspend_resume.log SUSPEND_MAX=20 SUSPEND_MIN=5 SUSPEND_INTERVAL=$(($SUSPEND_MAX - $SUSPEND_MIN + 1 )) WAKE_MAX=20 WAKE_MIN=5 WKAE_INTERVAL=$(($WAKE_MAX - $WAKE_MIN + 1 )) MAX_CYCLES=5000 mkdir -p ${RESULT_DIR} # suspend & resume test echo "**************************************" echo "auto suspend: 1" echo "suspend (resume by key): 2" echo "auto suspend (resume by rtc): 3" echo "**************************************" read SUSPEND_CHOICE random() { hexdump -n 2 -e '/2 "%u"' /dev/urandom } suspend_resume_by_Key() { echo "System will suspend, Please resume by key" pm-suspend } auto_suspend_resume() { while true do pm-suspend sleep 5 done } auto_suspend_resume_rtc() { cnt=0 # set sys time same with rtc hwclock --systohc hwclock -w while true; do echo "have done $cnt suspend/resume" if [ $cnt -ge $MAX_CYCLES ] then echo "run $MAX_CYCLES cycles, finish test" exit 0 fi sus_time=$(( ( $(random) % $SUSPEND_INTERVAL ) + $SUSPEND_MIN )) echo "sleep for $sus_time second" echo 0 > /sys/class/rtc/rtc0/wakealarm echo "+${sus_time}" > /sys/class/rtc/rtc0/wakealarm pm-suspend wake_time=$(( ( $(random) % $WKAE_INTERVAL ) + $WAKE_MIN )) echo "wake for $wake_time second" sleep $wake_time let "cnt=$cnt+1" done } case ${SUSPEND_CHOICE} in 1) auto_suspend_resume & ;; 2) suspend_resume_by_Key ;; 3) auto_suspend_resume_rtc ;; esac