xiaoyu/project/app/uvc_app_tiny/uvc_app/RkLunch.sh
2025-03-04 22:36:42 +08:00

106 lines
2.6 KiB
Bash
Executable File

#!/bin/sh
check_usb_state()
{
if [[ ! -f "/oem/usr/bin/rk_mpi_uvc" && ! -f "/usr/bin/rk_mpi_uvc" ]]; then
return 1
fi
PID=`ps |grep rk_mpi_uvc |grep -v grep | wc -l`
if [ $PID -le 0 ];then
echo " exit rk_mpi_uvc ,restart it for uvc recovery..."
killall adbd
sleep 1
killall -9 adbd
rm -rf /sys/kernel/config/usb_gadget/rockchip/configs/b.1/f*
echo none > /sys/kernel/config/usb_gadget/rockchip/UDC
rmdir /sys/kernel/config/usb_gadget/rockchip/functions/ffs.adb
rmdir /sys/kernel/config/usb_gadget/rockchip/functions/uac*
UDC=`ls /sys/class/udc/| awk '{print $1}'`
echo $UDC > /sys/bus/platform/drivers/dwc3/unbind
echo $UDC > /sys/bus/platform/drivers/dwc3/bind
/oem/usr/bin/usb_config.sh uac1 #off #disable adb
if [ -d "/oem/usr/share/iqfiles" ];then
rk_mpi_uvc -c /tmp/rkuvc.ini -a /oem/usr/share/iqfiles &
else
rk_mpi_uvc &
fi
fi
}
post_chk()
{
#TODO: ensure /userdata mount done
cnt=0
while [ $cnt -lt 30 ];
do
cnt=$(( cnt + 1 ))
if mount | grep -w userdata; then
break
fi
sleep .1
done
# if ko exist, install ko first
default_ko_dir=/ko
if [ -f "/oem/usr/ko/insmod_ko.sh" ];then
default_ko_dir=/oem/usr/ko
fi
if [ -f "$default_ko_dir/insmod_ko.sh" ];then
cd $default_ko_dir && sh insmod_ko.sh && cd -
fi
# if /data/rkuvc not exist, cp /usr/share
rkuvc_ini=/tmp/rkuvc.ini
default_rkuvc_ini=/usr/share/rkuvc.ini
if [ ! -f "$default_rkuvc_ini" ];then
default_rkuvc_ini=/oem/usr/share/rkuvc.ini
fi
if [ ! -f "$default_rkuvc_ini" ];then
echo "Error: not found rkuvc.ini !!!"
exit -1
fi
if [ ! -f "$rkuvc_ini" ]; then
cp $default_rkuvc_ini $rkuvc_ini -f
fi
export rt_log_level=3
export rk_mpi_uvc_log_level=2
export uac_app_log_level=2
touch /tmp/uvc_no_timeout
/oem/usr/bin/usb_config.sh uac1
ifconfig lo 127.0.0.1
if [ -d "/oem/usr/share/iqfiles" ];then
rk_mpi_uvc -c /tmp/rkuvc.ini -a /oem/usr/share/iqfiles &
else
rk_mpi_uvc &
fi
while true
do
sleep 2
if [ -f "/tmp/uvc_stop_check" ]; then
echo " stop check usb state sh " && break
else
check_usb_state
fi
if [ -f "/tmp/reboot_loader" ]; then
echo "exec reboot loader cmd..."
reboot loader &
fi
done
}
start_app()
{
if [ -f "/etc/init.d/S50usbdevice" ];then
mv /etc/init.d/S50usbdevice /etc/S50usbdevice -f
fi
echo "##### start uvc app ..."
post_chk &
}
ulimit -c unlimited
echo "/data/core-%p-%e" > /proc/sys/kernel/core_pattern
start_app