| #!/bin/bash |
| # |
| # Wait for the device to be ready to run tests. |
| |
| SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" |
| source $SCRIPT_DIR/android_setup.sh |
| source $SCRIPT_DIR/utils/setup_adb.sh |
| |
| # Helper function used by get_battery_level. Parses the battery level from |
| # dumpsys output. |
| function _parse_battery_level { |
| SPLIT=( $@ ) |
| |
| HAS_BATTERY=1 |
| LEVEL="" |
| |
| for i in "${!SPLIT[@]}"; do |
| if [ "${SPLIT[$i]}" = "level:" ]; then |
| LEVEL="${SPLIT[$i+1]}" |
| fi |
| if [ "${SPLIT[$i]}" = "present:" ]; then |
| PRESENT="$(echo "${SPLIT[$i+1]}" | tr -d '\r')" |
| if [ "$PRESENT" = "0" ]; then |
| HAS_BATTERY=0 |
| fi |
| if [ "$PRESENT" = "false" ]; then |
| HAS_BATTERY=0 |
| fi |
| fi |
| done |
| |
| if [ "$HAS_BATTERY" = "1" ]; then |
| echo "$LEVEL" | tr -d '\r' |
| return |
| fi |
| # If there's no battery, report a full battery. |
| echo "Device has no battery." 1>&2 |
| echo "100" |
| } |
| |
| # Echo the battery level percentage of the attached Android device. |
| function get_battery_level { |
| STATS="$($ADB $DEVICE_SERIAL shell dumpsys batteryproperties)" |
| SPLIT=( $STATS ) |
| RV="$(_parse_battery_level ${SPLIT[@]})" |
| if [ -n "$RV" ]; then |
| echo "$RV" |
| return |
| fi |
| |
| echo "Battery level fallback..." 1>&2 |
| |
| STATS="$($ADB $DEVICE_SERIAL shell dumpsys battery)" |
| SPLIT=( $STATS ) |
| RV="$(_parse_battery_level ${SPLIT[@]})" |
| if [ "$RV" != "-1" ]; then |
| echo "$RV" |
| return |
| fi |
| |
| echo "Could not determine battery level!" 1>&2 |
| # Just exit to prevent hanging forever or failing the build. |
| echo "0" |
| } |
| |
| set -e |
| |
| # Wait for the device to be connected and fully booted. |
| while [ "$($ADB $DEVICE_SERIAL shell getprop sys.boot_completed | tr -d '\r')" != "1" ]; do |
| echo "Waiting for the device to be connected and ready." |
| sleep 5 |
| done |
| |
| # Wait for battery charge. |
| DESIRED_BATTERY_LEVEL=80 |
| CURRENT_BATTERY_LEVEL="$(get_battery_level)" |
| while [ "${CURRENT_BATTERY_LEVEL}" -lt "${DESIRED_BATTERY_LEVEL}" ]; do |
| echo "Battery level is ${CURRENT_BATTERY_LEVEL}; waiting to charge to ${DESIRED_BATTERY_LEVEL}" |
| sleep 5 |
| CURRENT_BATTERY_LEVEL="$(get_battery_level)" |
| done |
| |
| echo "Ready!" |