#! /bin/bash

export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
if [ "$1" == "remove" ]
then
	if [ "$(lsmod |grep pl2303)" != "" ]
	then 
		rmmod -f pl2303
	fi
elif [ "$1" == "update" ]
then
	if [ "$(lsmod |grep option)" != "" ]
	then
		rmmod -f option
	fi
	if [ "$(lsmod |grep pl2303)" != "" ]
	then 
		rmmod -f pl2303
	fi
	
	if [ "$(lsmod |grep usbserial)" != "" ]
	then
		rmmod -f usbserial
	fi

	modprobe usbserial vendor=0x12d1 product=$2	

elif [ "$1" == "load" ]
then
	modprobe hw_cdc_driver
	modprobe option
	echo 12D1 $2 > /sys/bus/usb-serial/drivers/option1/new_id
	touch /dev/huawei_mobile
elif [ "$1" == "unload" ]
then
        #Update for DTS2011050500830 lxz 20110520 
	#/sbin/rmmod -f option
	rmmod option
	modprobe option
	rm -f /dev/huawei_mobile
elif [ "$1" == "bindusbstorage" ]
then

	for SEG in f7 f8 f9 f10 f11 f12 f13 
	do
		PORT=$(echo $2 | cut -d / -$SEG)
		if [ "$(echo $PORT |grep : )" != "" ] 
		then
			break
		fi
        done
	echo -n $PORT > /sys/bus/usb/drivers/option/unbind

	if [ "$(lsmod |grep usb_storage)" != "" ]
	then 
		echo -n $PORT > /sys/bus/usb/drivers/usb-storage/bind
	else
		modprobe usb-storage
                echo -n $PORT > /sys/bus/usb/drivers/usb-storage/bind
	fi
	#######Modified by lxz 81005329  DTS2013071203780  start########
elif [ "$1" == "unbindsd" ]
then
        pid=`cat /sys/$2/../idProduct`
        ((pid=16#$pid))
        #echo "current pid is $pid" >> /tmp/aaa
        ((flashcardpidsmall=16#14fe))
        ((flashcardpidbig=16#1f1f))
        ((other1=16#157d))
        ((other2=16#158b))
 
        #echo "small is 14fe $flashcardpidsmall" >> /tmp/aaa
        #echo "big is 1f1f $flashcardpidbig" >> /tmp/aaa
        if [ $pid -ge $flashcardpidsmall -a $pid -le $flashcardpidbig -a $pid -eq $other1 -a $pid -eq $other2 ]
        then
            echo "/sbin/usbmod: this is a flash card ,don't unbind sd" >> /var/log/syslog
        else
            echo "/sbin/usbmod: this is a datacard ,unbind sd interface" >> /var/log/syslog
	    for SEG in f7 f8 f9 f10 f11 f12 f13 
	    do
		PORT=$(echo $2 | cut -d / -$SEG)
		if [ "$(echo $PORT |grep : )" != "" ] 
		then
			break
		fi
            done
	    echo -n $PORT > /sys/bus/usb/drivers/usb-storage/unbind
        fi
      #######Modified by lxz 81005329  DTS2013071203780  end######

elif [ "$1" == "bindcdc_ether" ]
then

        for SEG in f7 f8 f9 f10 f11 f12 f13
        do
                PORT=$(echo $2 | cut -d / -$SEG)
                if [ "$(echo $PORT |grep : )" != "" ]
                then
                        break
                fi
        done
        echo -n $PORT > /sys/bus/usb/drivers/option/unbind

        if [ "$(lsmod |grep cdc_ether)" != "" ]
        then
                echo -n $PORT > /sys/bus/usb/drivers/cdc_ether/bind
        else
                modprobe cdc_ether
                echo -n $PORT > /sys/bus/usb/drivers/cdc_ether/bind
        fi
elif [ "$1" == "umount" ]
then
	for ((i=0;i<10;i=i+1))
	do
		sr=/dev/sr$i
		if [ -b $sr ]
		then
			VID=`udevadm info -a -p $(udevadm info -q path -n $sr)|grep 12d1`
			if [ "$(echo $VID|grep 12d1)" != "" ]
			then
				if [ "$(echo `mount|grep $sr`)" != "" ]
				then	
					echo "umount $sr">> /var/log/messages
					umount $sr
				fi	
			fi
		fi
	done
elif [ "$1" == "unbind" ]
then
	for SEG in f7 f8 f9 f10 f11 f12 f13
	do
		PORT=$(echo $2 | cut -d / -$SEG)
		if [ "$(echo $PORT |grep : )" != "" ]
		then
			break
		fi
	done
	echo -n $PORT > /sys/bus/usb/drivers/qmi_wwan/unbind
        echo -n $PORT > /sys/bus/usb/drivers/cdc_wdm/unbind
        echo -n $PORT > /sys/bus/usb/drivers/cdc_ncm/unbind
        echo -n $PORT > /sys/bus/usb/drivers/cdc_ether/unbind
	####added by maqianni 2014-5-19 DTS2014050606256
        echo -n $PORT > /sys/bus/usb/drivers/huawei_cdc_ncm/unbind

	if [ "$(lsmod |grep hw_cdc_driver)" != "" ]
	then
		echo -n $PORT > /sys/bus/usb/drivers/huawei_ether/bind
	else
		modprobe hw_cdc_driver 
		echo -n $PORT > /sys/bus/usb/drivers/huawei_ether/bind
	fi
elif [ "$1" == "unbind_qmi_wwan" ]
then
	for SEG in f7 f8 f9 f10 f11 f12 f13
	do
		PORT=$(echo $2 | cut -d / -$SEG)
		if [ "$(echo $PORT |grep : )" != "" ]
		then
			break
		fi
	done
	echo -n $PORT > /sys/bus/usb/drivers/qmi_wwan/unbind

	if [ "$(lsmod |grep hw_cdc_driver)" != "" ]
	then
		echo -n $PORT > /sys/bus/usb/drivers/huawei_ether/bind
	else
		modprobe hw_cdc_driver 
		echo -n $PORT > /sys/bus/usb/drivers/huawei_ether/bind
	fi
elif [ "$1" == "unbind_cdc_wdm" ]
then
	for SEG in f7 f8 f9 f10 f11 f12 f13
	do
		PORT=$(echo $2 | cut -d / -$SEG)
		if [ "$(echo $PORT |grep : )" != "" ]
		then
			break
		fi
	done
	echo -n $PORT > /sys/bus/usb/drivers/cdc_wdm/unbind

	if [ "$(lsmod |grep hw_cdc_driver)" != "" ]
	then
		echo -n $PORT > /sys/bus/usb/drivers/huawei_ether/bind
	else
		modprobe hw_cdc_driver 
		echo -n $PORT > /sys/bus/usb/drivers/huawei_ether/bind
	fi
else

	SYS_KERN_VER=`uname -r`
	if [ "$SYS_KERN_VER" \< "2.6.25" ]
	then
		echo "Huawei NDIS can not support Current system"
	else
		for SEG in f7 f8 f9 f10 f11 f12 f13 
		do
			PORT=$(echo $1 | cut -d / -$SEG)
			if [ "$(echo $PORT |grep : )" != "" ] 
			then
				break
			fi
                done
		echo -n $PORT > /sys/bus/usb/drivers/option/unbind

		if [ "$(lsmod |grep hw_cdc_driver)" != "" ]
		then 
			echo -n $PORT > /sys/bus/usb/drivers/huawei_ether/bind
		else
			modprobe hw_cdc_driver
		fi
	fi
	
	if [ "$(lsmod |grep usb_storage)" == "" ]
	then
		modprobe usb-storage
	fi
	
fi
