linuxOS_AP05/debian/test/rockchip-test/suspend_resume/suspend_resume.sh

81 lines
1.6 KiB
Bash
Raw Permalink Normal View History

2025-09-26 01:40:02 +00:00
#!/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