#! /bin/sh
|
|
UMS_EN=off
|
MTP_EN=off
|
ADB_EN=off
|
UMS_AUTO_MOUNT=off
|
UMS_BLOCK=/dev/block/by-name/userdata
|
PATH_TO_UMS_FILE=/sys/kernel/config/usb_gadget/rockchip/functions/mass_storage.0/lun.0/file
|
PATH_TO_USB_CONFIG=/tmp/.usb_config
|
PATH_TO_UDC=/sys/kernel/config/usb_gadget/rockchip/UDC
|
|
find_ums_config()
|
{
|
while read line
|
do
|
NAME=`echo $line | awk -F "=" '{print $1}'`
|
VAR=`echo $line | awk -F "=" '{print $2}'`
|
|
if [ "$NAME" == "ums_block" ]; then
|
UMS_BLOCK=${VAR}
|
fi
|
|
if [ "$NAME" == "ums_block_auto_mount" ]; then
|
UMS_AUTO_MOUNT=${VAR}
|
fi
|
done < ${PATH_TO_USB_CONFIG}
|
}
|
|
find_spec_function()
|
{
|
functions=`cat /sys/kernel/config/usb_gadget/rockchip/configs/b.1/strings/0x409/configuration`
|
|
functions=${functions}_over_
|
tmp=`echo $functions | awk -F "_" '{print $1}'`
|
|
while [ "${tmp}" != "over" ]; do
|
test "$tmp" == "mtp" && MTP_EN=on
|
test "$tmp" == "ums" && UMS_EN=on
|
test "$tmp" == "adb" && ADB_EN=on
|
functions=${functions#*_}
|
tmp=`echo $functions | awk -F "_" '{print $1}'`
|
done
|
}
|
|
dev_path=/sys$1
|
state=$2
|
|
find_spec_function
|
if [ "$state"x != "CONFIGURED"x ] ; then
|
|
if [ $MTP_EN = on ]; then
|
pgrep mtp-server
|
echo "mtp-server runing:" $?
|
if ! pgrep -f mtp-server; then
|
start-stop-daemon --start --quiet --background --exec /usr/bin/mtp-server
|
fi
|
fi
|
|
if [ $ADB_EN = on ] && [ "$state"x = "DISCONNECTED"x ] ; then
|
cat ${PATH_TO_USB_CONFIG} | grep USB_FORCE_CHANGED || \
|
/etc/init.d/S50usbdevice restart
|
fi
|
else
|
if [ $UMS_EN = on ]; then
|
find_ums_config
|
if [ $UMS_AUTO_MOUNT = on ]; then
|
umount -f /mnt/ums
|
fi
|
VAR=`cat ${PATH_TO_UMS_FILE}`
|
test -z ${VAR} && echo ${UMS_BLOCK} > ${PATH_TO_UMS_FILE}
|
fi
|
fi
|