#!/bin/bash 
 | 
  
 | 
RESULT_DIR=/userdata/rockchip-test/ 
 | 
RESULT_LOG=${RESULT_DIR}/suspend_resume.txt 
 | 
SUSPEND_MAX=6 
 | 
SUSPEND_MIN=3 
 | 
SUSPEND_INTERVAL=$(($SUSPEND_MAX - $SUSPEND_MIN + 1 )) 
 | 
WAKE_MAX=6 
 | 
WAKE_MIN=3 
 | 
WKAE_INTERVAL=$(($WAKE_MAX - $WAKE_MIN + 1 )) 
 | 
MAX_CYCLES=10000 
 | 
  
 | 
if [ ! -e "/sys/class/rtc/rtc0/wakealarm" ];then 
 | 
    echo "non-existent rtc, please check if rtc enabled" 
 | 
    exit 
 | 
fi 
 | 
  
 | 
mkdir -p ${RESULT_DIR} 
 | 
  
 | 
random() { 
 | 
  hexdump -n 2 -e '/2 "%u"' /dev/urandom 
 | 
} 
 | 
  
 | 
auto_suspend_resume_rtc() 
 | 
{ 
 | 
    cnt=0 
 | 
  
 | 
    # set sys time same with rtc 
 | 
    hwclock --systohc 
 | 
    hwclock -w 
 | 
    echo "$(date): auto_suspend_resume_rtc start" > ${RESULT_LOG} 
 | 
  
 | 
    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 
 | 
        echo "$(date): Count: $cnt - sleep: $sus_time wake: $wake_time " >> ${RESULT_LOG} 
 | 
        let "cnt=$cnt+1" 
 | 
    done 
 | 
} 
 | 
auto_suspend_resume_rtc 
 |