1#!/bin/sh
2
3if [ "$(pidof $(basename $0))" != "$$"  ]; then
4	echo "handing previous event, sleep 2" > /dev/console
5	sleep 2
6fi
7
8old_usbdisknum=$(cat /tmp/usbdisknum)
9usb1num=$(cat /tmp/usb1num)
10usb3num=$(cat /tmp/usb3num)
11new_usbdisknum=$(grep "Driver=usb-storage" /proc/bus/usb/devices | wc -l)
12
13old_printer1num=$(cat /tmp/printer1num)
14old_printer3num=$(cat /tmp/printer3num)
15new_printer1num=$(grep "product" /proc/NetUSB/0/device | wc -l)
16new_printer3num=$(grep "product" /proc/NetUSB/1/device | wc -l)
17
18if [ "x$old_usbdisknum" = "x" ]; then
19	old_usbdisknum=0
20fi
21
22if [ "x$usb1num" = "x" ]; then
23	usb1num=0
24fi
25
26if [ "x$usb3num" = "x" ]; then
27	usb3num=0
28fi
29
30if [ "x$old_printer1num" = "x" ]; then
31	old_printer1num=0
32fi
33
34if [ "x$old_printer3num" = "x" ]; then
35	old_printer3num=0
36fi
37
38if [ $new_usbdisknum -eq $old_usbdisknum ]; then
39	#eSATA disk recognized.
40	#cd /sys/block/sdc; ls -l
41	#device -> ../../devices/platform/msm_sata.0/ahci.0/ata1/host0/target0:0:0/0:0:0:0
42	#To get ata1 when mounted
43	ls -l /sys/block | grep sd | awk '{print $9}' > /tmp/disk_event
44	while read LINE
45	do
46		sata_port=$(ls -l /sys/block/$LINE | grep ata | awk '{print $11}' | awk -F/ '{print $7}')
47		if [ "$sata_port" = "ata1" ]; then
48			echo "SATA disk mounted!!!"
49			ledcontrol -n sata_blink -c green -s on
50			echo "$LINE" > /tmp/sata_partition
51			echo "1" > /tmp/satadisknum
52		fi
53	done</tmp/disk_event
54	rm /tmp/disk_event
55	# SATA LED off when plug out SATA disk
56	sata_disk=`cat /tmp/sata_partition | awk '{print $1}'`
57	if [ "x$sata_disk" != "x" ]; then
58		tmp_sata_port=$(ls -l /sys/block/$sata_disk | grep ata | awk '{print $11}' | awk -F/ '{print $7}')
59		if [ "x$tmp_sata_port" = "x" ]; then
60			echo "SATA disk UN-mounted!!!"
61			ledcontrol -n sata -c green -s off
62			rm /tmp/sata_partition
63			echo "0" > /tmp/satadisknum
64		fi
65	fi
66
67	#USB printer add /proc/NetUSB/0/device /proc/NetUSB/1/device
68	if [ $new_printer1num -ge 1 -a $new_printer1num -gt $old_printer1num ]; then
69		ledcontrol -n usb1_blink -c green -s on
70	elif [ $new_printer1num -eq 0 -a $usb1num -eq 0 ]; then
71		ledcontrol -n usb1 -c green -s off
72	fi
73
74	if [ $new_printer3num -ge 1 -a $new_printer3num -gt $old_printer3num ]; then
75		ledcontrol -n usb3_blink -c green -s on
76	elif [ $new_printer3num -eq 0 -a $usb3num -eq 0 ]; then
77		ledcontrol -n usb3 -c green -s off
78	fi
79
80elif [ $new_usbdisknum -ge 1 -a $new_usbdisknum -gt $old_usbdisknum ]; then
81	if [ $(($new_usbdisknum - $old_usbdisknum)) -ge 2 ]; then
82		echo "plug two usb disk at same time, sleep 1" > /dev/console
83		sleep 1
84	fi
85	echo "New USB disk mounted!!!" > /dev/console
86	ls -l /sys/block | grep sd | awk '{print $9}' > /tmp/disk_event
87	while read LINE
88	do
89		#cd /sys/block/sda; ls -l
90		#../../devices/platform/ipq-dwc3.0/dwc3.0/xhci-hcd.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0
91		#../../devices/platform/ipq-dwc3.1/dwc3.1/xhci-hcd.1/usb3/4-1/4-1:1.0/host3/target3:0:0/3:0:0:0
92		# To get usb1 or usb3
93		usb_port=$(ls -l /sys/block/$LINE | grep usb | awk '{print $11}' | awk -F/ '{print $8}')
94		#usb_name=`echo $usb_port | sed 's/[0-9]//g'`
95		#usb_num=`echo $usb_port | cut -c 4-`
96
97		usb_interface=$(ls -l /sys/block/$LINE | grep usb | awk '{print $11}' | awk -F/ '{print $6}')
98
99		echo "usb_port= $usb_port" > /dev/console
100		echo "usb_interface =$usb_interface" > /dev/console
101		if [ "$usb_interface" = "dwc3.0" ]; then
102			if [ $usb1num -eq 0 ]; then
103				ledcontrol -n usb1_blink -c green -s on
104				echo 1 > /tmp/usb1num
105			else
106				#For USB hub case
107				for i in `df | grep sd | awk '{print $1}' | awk -F/ '{print $3}' | sed 's/[0-9]//g'`
108				do
109					if [ "$i" = "$LINE" ]; then
110						usb1_flag=1
111						break;
112					else
113						usb1_flag=0
114					fi
115				done
116				if [ $usb1_flag -eq 0 ]; then
117					ledcontrol -n usb1_blink -c green -s on
118					echo 1 > /tmp/usb1num
119				fi
120			fi
121		elif [ "$usb_interface" = "dwc3.1" ]; then
122			if [ $usb3num -eq 0 ]; then
123				ledcontrol -n usb3_blink -c green -s on
124				echo 1 > /tmp/usb3num
125			else
126				#For USB hub case
127				for j in `df | grep sd | awk '{print $1}' | awk -F/ '{print $3}' | sed 's/[0-9]//g'`
128				do
129					if [ "$j" = "$LINE" ]; then
130						usb3_flag=1
131						break;
132					else
133						usb3_flag=0
134					fi
135				done
136				if [ $usb3_flag -eq 0 ]; then
137					ledcontrol -n usb3_blink -c green -s on
138					echo 1 > /tmp/usb3num
139				fi
140			fi
141		fi
142	done</tmp/disk_event
143	rm /tmp/disk_event
144elif [ $new_usbdisknum -lt $old_usbdisknum ]; then
145	ls -l /sys/block | grep sd | awk '{print $9}' > /tmp/disk_left
146	disk_left=$(cat /tmp/disk_left)
147	if [ "x$disk_left" = "x" ]; then
148		#if user plug off disk during the LED still blink, we should turn off blink firstly then do turn off led
149		if [ $usb1num -eq 1 ]; then
150			ledcontrol -n usb1_blink -c green -s off
151		fi
152		if [ $usb3num -eq 1 ]; then
153			ledcontrol -n usb3_blink -c green -s off
154		fi
155		echo "No USB disk mounted!!!" > /dev/console
156		ledcontrol -n usb1 -c green -s off
157		ledcontrol -n usb3 -c green -s off
158		echo 0 > /tmp/usb1num
159		echo 0 > /tmp/usb3num
160	else
161		usb1_left_flag=0
162		usb3_left_flag=0
163		while read LINE
164		do
165			usb_left=$(ls -l /sys/block/$LINE | grep usb | awk '{print $11}' | awk -F/ '{print $6}')
166			if [ "$usb_left" = "dwc3.0" ]; then
167				usb1_left_flag=1
168			elif [ "$usb_left" = "dwc3.1" ]; then
169				usb3_left_flag=1
170			fi
171		done</tmp/disk_left
172		rm /tmp/disk_left
173
174		if [ $usb1_left_flag -eq 0 ]; then
175			ledcontrol -n usb1_blink -c green -s off
176			ledcontrol -n usb1 -c green -s off
177			echo 0 > /tmp/usb1num
178		fi
179		if [ $usb3_left_flag -eq 0 ]; then
180			ledcontrol -n usb3_blink -c green -s off
181			ledcontrol -n usb3 -c green -s off
182			echo 0 > /tmp/usb3num
183		fi
184	fi
185fi
186
187echo $new_usbdisknum > /tmp/usbdisknum
188echo $new_printer1num > /tmp/printer1num
189echo $new_printer3num > /tmp/printer3num
190satadisknum=$(cat /tmp/satadisknum)
191if [ "x$satadisknum" = "x" ]; then
192	echo "0" > /tmp/satadisknum
193fi
194