#!/bin/sh
#
# Created by chengjt10131021 for usb composition devices switch
# Copyright (c) 2012 ZTE Incorporated.  All Rights Reserved.
# ZTE Proprietary and Confidential.

# zusb_switch      script for ZTE usb composition devices switch
# zte_drv_usb_cflag: bit7      bit6         bit5        bit4         bit3   bit2   bit1         bit0
#                    always 1  0:before sw  0:O_DEVICE  0:windows    pad 0  pad 0  0:no sdcard  0:no cdrom
#                    always 1  1:after sw   1:A_DEVICE  1:mac/linux  pad 0  pad 0  1:   sdcard  1:   cdrom

# A_DEVICE:     1010 0011 0xA3
# B1_DEVICE:    1000 0011 0x83
# RNDIS_DEVICE: 1000 0011 0x83
# MBIM_DEVICE:  1000 0011 0x83
# ECM_DEVICE:   1001 0011 0x93
# DBG1_DEVICE:  1000 0011 0x83
# DBG2_DEVICE:  1001 0011 0x93

case "$1" in
    A_DEVICE)
        echo "Starting USB Android Gadget As Single Ms Device"
        echo 0 > /sys/class/android_usb/android0/enable
        echo 0x0005 > /sys/class/android_usb/android0/bcdDevice
        echo 0x0393 > /sys/class/android_usb/android0/idProduct
        echo 0 > /sys/class/android_usb/android0/bDeviceClass
        echo 0xA3 > /sys/class/android_usb/android0/zte_drv_usb_cflag
        echo mass_storage > /sys/class/android_usb/android0/functions
        if [ -f /zte/zteconf/usb/mc_usb_flag ]; then
            export MC_FLAG=`cat /zte/zteconf/usb/mc_usb_flag`
            rm -f /zte/zteconf/usb/mc_usb_flag
            case $MC_FLAG in
                enable)
                    echo 1 > /sys/class/android_usb/android0/enable
                    exit 0
                ;;
                disable)
                    exit 0
                ;;
                *)
                    echo 1 > /sys/class/android_usb/android0/enable
                    exit 0
                ;;
            esac
        fi
        echo 1 > /sys/class/android_usb/android0/enable
    ;;
    B1_DEVICE)
        echo "Starting USB Android Gadget As Mult-ports"
        echo 1 > /sys/module/restart/parameters/download_mode
        echo 0 > /sys/class/android_usb/android0/enable
        echo MF96TMOFFFS20000 > /sys/class/android_usb/android0/iSerial
        echo 0x0005 > /sys/class/android_usb/android0/bcdDevice
        echo 0x0394 > /sys/class/android_usb/android0/idProduct
        echo 0 > /sys/class/android_usb/android0/bDeviceClass
        echo 0x83 > /sys/class/android_usb/android0/zte_drv_usb_cflag
        echo diag,serial,rmnet,mass_storage,adb > /sys/class/android_usb/android0/functions
        echo 1 > /sys/class/android_usb/android0/enable
    ;;
    RNDIS_DEVICE)
        echo "Starting USB Android Gadget As Rndis and Ms"
        echo 0 > /sys/class/android_usb/android0/enable
        echo 0x0005 > /sys/class/android_usb/android0/bcdDevice
        echo 0x0408 > /sys/class/android_usb/android0/idProduct
        echo 0 > /sys/class/android_usb/android0/bDeviceClass
        echo 0x83 > /sys/class/android_usb/android0/zte_drv_usb_cflag
        echo rndis,mass_storage > /sys/class/android_usb/android0/functions
        echo 1 > /sys/class/android_usb/android0/enable
    ;;
    MBIM_DEVICE)
        echo "Starting USB Android Gadget As Mbim and Ms"
        echo 0 > /sys/class/android_usb/android0/enable
        echo 0x0005 > /sys/class/android_usb/android0/bcdDevice
        echo 0x0408 > /sys/class/android_usb/android0/idProduct
        echo 0 > /sys/class/android_usb/android0/bDeviceClass
        echo 0x83 > /sys/class/android_usb/android0/zte_drv_usb_cflag
        echo usb_mbim,mass_storage > /sys/class/android_usb/android0/functions
        echo 1 > /sys/class/android_usb/android0/enable
    ;;
    ECM_DEVICE)
    sleep 3
        echo "Starting USB Android Gadget As Ecm and Ms"
        echo 0 > /sys/class/android_usb/android0/enable
        echo 0x0005 > /sys/class/android_usb/android0/bcdDevice
        echo 0x0409 > /sys/class/android_usb/android0/idProduct
        echo 2 > /sys/class/android_usb/android0/bDeviceClass
        echo 0x93 > /sys/class/android_usb/android0/zte_drv_usb_cflag
        echo ecm,mass_storage > /sys/class/android_usb/android0/functions
        echo 1 > /sys/class/android_usb/android0/enable
    ;;
    DBG1_DEVICE)
        echo "Starting USB Android Gadget As Rndis and Mult-ports"
        echo 0 > /sys/class/android_usb/android0/enable
        echo MF96TMOFFFS20000 > /sys/class/android_usb/android0/iSerial
        echo 0x0005 > /sys/class/android_usb/android0/bcdDevice
        echo 0x0411 > /sys/class/android_usb/android0/idProduct
        echo 0 > /sys/class/android_usb/android0/bDeviceClass
        echo 0x83 > /sys/class/android_usb/android0/zte_drv_usb_cflag
        echo rndis,diag,serial,mass_storage,adb > /sys/class/android_usb/android0/functions
        echo 1 > /sys/class/android_usb/android0/enable
    ;;
    DBG2_DEVICE)
        echo "Starting USB Android Gadget As Rndis and Mult-ports"
        echo 0 > /sys/class/android_usb/android0/enable
        echo MF96TMOFFFS20000 > /sys/class/android_usb/android0/iSerial
        echo 0x0005 > /sys/class/android_usb/android0/bcdDevice
        echo 0x0411 > /sys/class/android_usb/android0/idProduct
        echo 2 > /sys/class/android_usb/android0/bDeviceClass
        echo 0x93 > /sys/class/android_usb/android0/zte_drv_usb_cflag
        echo ecm,diag,serial,mass_storage,adb > /sys/class/android_usb/android0/functions
        echo 1 > /sys/class/android_usb/android0/enable
    ;;
    *)
        echo "Starting USB Android Gadget with unknown parameter"
        echo "Usage zusb_switch {A_DEVICE | B1_DEVICE | ...}" >&2
        exit 1 
    ;;
esac

