xref: /aosp_15_r20/system/extras/tests/workloads/capture.sh (revision 288bf5226967eb3dac5cce6c939ccc2a7f2b4fe5)
1*288bf522SAndroid Build Coastguard Worker# Capture and display input events and coordinates
2*288bf522SAndroid Build Coastguard Worker#
3*288bf522SAndroid Build Coastguard Worker# Usage: ./capture.sh
4*288bf522SAndroid Build Coastguard Worker#
5*288bf522SAndroid Build Coastguard Worker
6*288bf522SAndroid Build Coastguard Worker# do a throw-away adb in case the server is out-of-date
7*288bf522SAndroid Build Coastguard Workeradb devices -l 2>&1 >/dev/null
8*288bf522SAndroid Build Coastguard Worker
9*288bf522SAndroid Build Coastguard Workerwhile [ $# -gt 0 ]
10*288bf522SAndroid Build Coastguard Workerdo
11*288bf522SAndroid Build Coastguard Worker	case "$1" in
12*288bf522SAndroid Build Coastguard Worker	(-d) DEVICE=$2; shift;;
13*288bf522SAndroid Build Coastguard Worker	(*)
14*288bf522SAndroid Build Coastguard Worker		echo Unknown option $1
15*288bf522SAndroid Build Coastguard Worker		exit 1;;
16*288bf522SAndroid Build Coastguard Worker	esac
17*288bf522SAndroid Build Coastguard Worker	shift
18*288bf522SAndroid Build Coastguard Workerdone
19*288bf522SAndroid Build Coastguard Worker
20*288bf522SAndroid Build Coastguard Workerif [ "$DEVICE" = "" ]; then
21*288bf522SAndroid Build Coastguard Worker	devInfo=$(adb devices -l | grep -v ^List | head -1)
22*288bf522SAndroid Build Coastguard Worker	set -- $devInfo
23*288bf522SAndroid Build Coastguard Worker	echo devInfo=$devInfo
24*288bf522SAndroid Build Coastguard Worker	DEVICE=$(echo $4 | sed 's/product://')
25*288bf522SAndroid Build Coastguard Workerfi
26*288bf522SAndroid Build Coastguard Worker
27*288bf522SAndroid Build Coastguard Workerfunction convert {
28*288bf522SAndroid Build Coastguard Worker	in=$1
29*288bf522SAndroid Build Coastguard Worker	max=$2
30*288bf522SAndroid Build Coastguard Worker	scale=$3
31*288bf522SAndroid Build Coastguard Worker	if [ $max -eq 0 ]; then
32*288bf522SAndroid Build Coastguard Worker		echo $in
33*288bf522SAndroid Build Coastguard Worker	else
34*288bf522SAndroid Build Coastguard Worker		((out=in*scale/max))
35*288bf522SAndroid Build Coastguard Worker		echo $out
36*288bf522SAndroid Build Coastguard Worker	fi
37*288bf522SAndroid Build Coastguard Worker}
38*288bf522SAndroid Build Coastguard Worker
39*288bf522SAndroid Build Coastguard Worker
40*288bf522SAndroid Build Coastguard Workercase $DEVICE in
41*288bf522SAndroid Build Coastguard Worker(shamu|hammerhead|bullhead|ariel)
42*288bf522SAndroid Build Coastguard Worker	# no scaling necessary
43*288bf522SAndroid Build Coastguard Worker	xmax=0
44*288bf522SAndroid Build Coastguard Worker	ymax=0;;
45*288bf522SAndroid Build Coastguard Worker(volantis)
46*288bf522SAndroid Build Coastguard Worker	xmax=3060
47*288bf522SAndroid Build Coastguard Worker	xscale=1500
48*288bf522SAndroid Build Coastguard Worker	ymax=2304
49*288bf522SAndroid Build Coastguard Worker	yscale=1950;;
50*288bf522SAndroid Build Coastguard Worker(*)
51*288bf522SAndroid Build Coastguard Worker	echo "Error: No display information available for $DEVICE"
52*288bf522SAndroid Build Coastguard Worker	exit 1;;
53*288bf522SAndroid Build Coastguard Workeresac
54*288bf522SAndroid Build Coastguard Worker
55*288bf522SAndroid Build Coastguard Workerecho Capturing input for $DEVICE...
56*288bf522SAndroid Build Coastguard Workerstdbuf -o0 adb shell getevent -t |
57*288bf522SAndroid Build Coastguard Worker	stdbuf -o0 grep "event.: 0003" |
58*288bf522SAndroid Build Coastguard Worker	stdbuf -o0 grep "0003 003[0156a9]" |
59*288bf522SAndroid Build Coastguard Worker	stdbuf -o0 tr ':[]
60*288bf522SAndroid Build Coastguard Worker' ' ' | while read line
61*288bf522SAndroid Build Coastguard Workerdo
62*288bf522SAndroid Build Coastguard Worker	set -- $line
63*288bf522SAndroid Build Coastguard Worker	code=$4
64*288bf522SAndroid Build Coastguard Worker	value=$((16#$5))
65*288bf522SAndroid Build Coastguard Worker	case $code in
66*288bf522SAndroid Build Coastguard Worker	(0035) x=$(convert $value $xmax $xscale);;
67*288bf522SAndroid Build Coastguard Worker	(0036) y=$(convert $value $ymax $yscale);;
68*288bf522SAndroid Build Coastguard Worker	(0030) tag="majorTouch";;
69*288bf522SAndroid Build Coastguard Worker	(0031) tag="minorTouch";;
70*288bf522SAndroid Build Coastguard Worker	(003a) tag="pressure";;
71*288bf522SAndroid Build Coastguard Worker	(0039) tag="trackingId";;
72*288bf522SAndroid Build Coastguard Worker	(--) echo unknown code=$code;;
73*288bf522SAndroid Build Coastguard Worker	esac
74*288bf522SAndroid Build Coastguard Worker	printf "%-10s %-4d  %-4d\n" $tag $x $y
75done
76