#!/bin/sh

sys_devname="$DEVICENAME"
sys_devtype="$DEVTYPE"

if [ "x$sys_devname" != "x" -o "x$sys_devtype" != "x" ]; then
	# Trigger by Hotplug EVENT
	if [ "x$sys_devname" = "x" -o "x$(echo $sys_devname | grep "^sd[a-z]")"	= "x" ]; then
		echo "Hotplug EVENT is not trigger by USB Disk Device, IGNORE!!!(MSG INFO: DEVICENAME:$sys_devname; DEVTYPE:$sys_devtype)" > /dev/console
		return
	fi
fi

echo "usb_disk_event START!!!" > /dev/console

if [ "$(pidof $(basename $0))" != "$$"  ]; then
	echo "handing previous event, sleep 2" > /dev/console
	sleep 2
fi

old_usbdisknum=$(cat /tmp/usbdisknum)
usb1num=$(cat /tmp/usb1num)
#usb3num=$(cat /tmp/usb3num)
new_usbdisknum=$(grep "Driver=usb-storage" /sys/kernel/debug/usb/devices | wc -l)


if [ "x$old_usbdisknum" = "x" ]; then
	old_usbdisknum=0
fi

if [ "x$usb1num" = "x" ]; then
	usb1num=0
fi

#if [ "x$usb3num" = "x" ]; then
#	usb3num=0
#fi


if [ $new_usbdisknum -eq $old_usbdisknum ]; then
	#eSATA disk recognized.
	#cd /sys/block/sdc; ls -l
	#device -> ../../devices/platform/msm_sata.0/ahci.0/ata1/host0/target0:0:0/0:0:0:0
	#To get ata1 when mounted
	ls -l /sys/block | grep sd | awk '{print $9}' > /tmp/disk_event
	while read LINE
	do
		sata_port=$(ls -l /sys/block/$LINE | grep ata | awk '{print $11}' | awk -F/ '{print $7}')
		if [ "$sata_port" = "ata1" ]; then
			echo "SATA disk mounted!!!"
			ledcontrol -n sata_blink -c green -s on
			echo "$LINE" > /tmp/sata_partition
			echo "1" > /tmp/satadisknum
		fi
	done</tmp/disk_event
	rm /tmp/disk_event
	# SATA LED off when plug out SATA disk
	sata_disk=`cat /tmp/sata_partition | awk '{print $1}'`
	if [ "x$sata_disk" != "x" ]; then
		tmp_sata_port=$(ls -l /sys/block/$sata_disk | grep ata | awk '{print $11}' | awk -F/ '{print $7}')
		if [ "x$tmp_sata_port" = "x" ]; then
			echo "SATA disk UN-mounted!!!"
			ledcontrol -n sata -c green -s off
			rm /tmp/sata_partition
			echo "0" > /tmp/satadisknum
		fi
	fi

elif [ $new_usbdisknum -ge 1 -a $new_usbdisknum -gt $old_usbdisknum ]; then
	if [ $(($new_usbdisknum - $old_usbdisknum)) -ge 2 ]; then
		echo "plug two usb disk at same time, sleep 1" > /dev/console
		sleep 1
	fi

	echo "New USB disk mounted!!!" > /dev/console
	sleep 1

	ls -l /sys/block | grep sd | awk '{print $9}' > /tmp/disk_event
	while read LINE
	do
		#cd /sys/block/sda; ls -l
		#../../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
		#../../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
		# To get usb1 or usb3
		usb_port=$(ls -l /sys/block/$LINE | grep usb | awk '{print $11}' | awk -F/ '{print $5}')
		#usb_name=`echo $usb_port | sed 's/[0-9]//g'`
		#usb_num=`echo $usb_port | cut -c 4-`

		usb_interface=$(ls -l /sys/block/$LINE | grep usb | awk '{print $11}' | awk -F/ '{print $6}')

		echo "usb_port = $usb_port" > /dev/console
		echo "usb_interface = $usb_interface" > /dev/console
		if [ "$usb_interface" = "2-1" -o "$usb_interface" = "3-1" ]; then
			if [ $usb1num -eq 0 ]; then
				ledcontrol -n usb0 -c green -s on
				echo 1 > /tmp/usb1num
			else
				#For USB hub case
				for i in `df | grep sd | awk '{print $1}' | awk -F/ '{print $3}' | sed 's/[0-9]//g'`
				do
					if [ "$i" = "$LINE" ]; then
						usb1_flag=1
						break;
					else
						usb1_flag=0
					fi
				done
				if [ $usb1_flag -eq 0 ]; then
					ledcontrol -n usb0 -c green -s on
					echo 1 > /tmp/usb1num
				fi
			fi
		#elif [ "$usb_interface" = "1" ]; then
		#	if [ $usb3num -eq 0 ]; then
		#		ledcontrol -n usb1 -c green -s on
		#		echo 1 > /tmp/usb3num
		#	else
		#		#For USB hub case
		#		for j in `df | grep sd | awk '{print $1}' | awk -F/ '{print $3}' | sed 's/[0-9]//g'`
		#		do
		#			if [ "$j" = "$LINE" ]; then
		#				usb3_flag=1
		#				break;
		#			else
		#				usb3_flag=0
		#			fi
		#		done
		#		if [ $usb3_flag -eq 0 ]; then
		#			ledcontrol -n usb1 -c green -s on
		#			echo 1 > /tmp/usb3num
		#		fi
		#	fi
		fi
	done</tmp/disk_event
	rm /tmp/disk_event
elif [ $new_usbdisknum -lt $old_usbdisknum ]; then
	ls -l /sys/block | grep sd | awk '{print $9}' > /tmp/disk_left
	disk_left=$(cat /tmp/disk_left)
	if [ "x$disk_left" = "x" ]; then
		#if user plug off disk during the LED still blink, we should turn off blink firstly then do turn off led
		if [ $usb1num -eq 1 ]; then
			ledcontrol -n usb0 -c green -s off
		fi
		#if [ $usb3num -eq 1 ]; then
		#	ledcontrol -n usb1 -c green -s off
		#fi
		echo "No USB disk mounted!!!" > /dev/console
		ledcontrol -n usb0 -c green -s off
		#ledcontrol -n usb1 -c green -s off
		echo 0 > /tmp/usb1num
		#echo 0 > /tmp/usb3num
	else
		usb1_left_flag=0
		#usb3_left_flag=0
		while read LINE
		do
			usb_left=$(ls -l /sys/block/$LINE | grep usb | awk '{print $11}' | awk -F/ '{print $6}')
			if [ "$usb_left" = "2-1" -o "$usb_left" = "3-1" ]; then
				usb1_left_flag=1
			#elif [ "$usb_left" = "1" ]; then
			#	usb3_left_flag=1
			fi
		done</tmp/disk_left
		rm /tmp/disk_left

		if [ $usb1_left_flag -eq 0 ]; then
			ledcontrol -n usb0 -c green -s off
			echo 0 > /tmp/usb1num
		fi
		#if [ $usb3_left_flag -eq 0 ]; then
		#	ledcontrol -n usb1 -c green -s off
		#	echo 0 > /tmp/usb3num
		#fi
	fi
fi

echo $new_usbdisknum > /tmp/usbdisknum
satadisknum=$(cat /tmp/satadisknum)
if [ "x$satadisknum" = "x" ]; then
	echo "0" > /tmp/satadisknum
fi
