#!/bin/sh

TARGET_IP="172.32.0.93"

USB_KEYWORD="android_work: sent uevent USB_STATE="
USB_MODE_PATH="/proc/device-tree/usbdrd/usb@ffb00000/dr_mode"

MAX_RETRIES=10
retries=0

usb0_config() {
	if [ "$(cat /proc/device-tree/usbdrd/usb@ffb00000/dr_mode)" == "peripheral" ]; then
		current_ip=$(ifconfig usb0 | grep -o 'inet addr:[^ ]*' | awk -F ':' '{print $2}')
		echo "current_ip = $current_ip"
		echo "TARGET_IP = $TARGET_IP"

		while [[ "$current_ip" != "$TARGET_IP" && $retries -lt $MAX_RETRIES ]]; do
			sleep .5
			echo "luckfox : set usb0 ip"
			ifconfig usb0 "$TARGET_IP"
			current_ip=$(ifconfig usb0 | grep -o 'inet addr:[^ ]*' | awk -F ':' '{print $2}')
			echo $current_ip
			retries=$((retries + 1))
		done

		if [[ "$current_ip" != "$TARGET_IP" ]]; then
			echo "usb0 config error"
		else
			echo "usb0 config success"
		fi
	else
		echo "usb0 is using host mode"
	fi
}

usb_reset() {
	while true; do
		last_line=$(dmesg | grep "$USB_KEYWORD" | tail -n 1)

		if [[ "$last_line" == *"DISCONNECTED"* ]]; then
			echo "Detected USB DISCONNECTED."
			/etc/init.d/S50usbdevice restart
			usb0_config
		#elif [[ "$last_line" == *"CONFIGURED"* ]]; then
		#    echo "Detected CONFIGURED. No action required."
		#else
		#    echo "No relevant USB_STATE found."
		fi

		sleep 5
	done
}

case $1 in
start)
	# check peripheral
	usb_mode="$(cat $USB_MODE_PATH)"
	if [ "$usb_mode" = "peripheral" ]; then
		usb0_config
		usb_reset &
	fi
	;;
stop) ;;
*)
	exit 1
	;;
esac
